小编Riv*_*all的帖子

C中的类型转换和按位操作的结果取决于顺序

我试图在int, char, short, long不使用头文件的情况下打印最小值<limit.h>.所以按位操作将是一个不错的选择.但有些奇怪的事发生了

该声明

printf("The minimum of short: %d\n", ~(((unsigned short)~0) >> 1));
Run Code Online (Sandbox Code Playgroud)

给我

The minimum of short: -32768
Run Code Online (Sandbox Code Playgroud)

但声明

printf("The minimum of short: %d\n", ~((~(unsigned short)0) >> 1));
Run Code Online (Sandbox Code Playgroud)

给我

The minimum of short: 0
Run Code Online (Sandbox Code Playgroud)

这种现象也发生在char.但它不会发生在long, int.为什么会这样?

值得一提的是我使用VS Code作为我的编辑器.当我unsigned char在语句中移动光标时

printf("The minimum of char: %d\n", (short)~((~(unsigned char)0) >> 1));
Run Code Online (Sandbox Code Playgroud)

它给了我一个提示,(int) 0而不是(unsigned char)0我所期望的.为什么会这样?

c bit-shift bitwise-operators implicit-conversion visual-studio-code

6
推荐指数
1
解决办法
402
查看次数

Docker无法解析'deb.debian.org'

我试图在Docker中构建一个容器以进行一些实验。这是我的Dockerfile

FROM debian

RUN mkdir -p /var/run/sshd

RUN apt-get update
RUN apt-get install -y openssh-server

RUN apt-get install -y sudo

RUN echo AddressFamily inet >> /etc/ssh/sshd_config

ARG username=Rivers
ARG userpasswd=perfectXJ2017

RUN useradd -ms /bin/bash $username && (echo $username:$userpasswd | chpasswd)

RUN adduser $username sudo

CMD /usr/sbin/sshd -D
Run Code Online (Sandbox Code Playgroud)

我试图用命令建立我的形象sudo docker build -t ics-image .

但是后来我收到了一些错误消息,整个过程停止了。这是错误消息。

Sending build context to Docker daemon  2.048kB
Step 1/11 : FROM debian
 ---> 8626492fecd3
Step 2/11 : RUN mkdir -p /var/run/sshd
 ---> …
Run Code Online (Sandbox Code Playgroud)

ubuntu debian docker

3
推荐指数
3
解决办法
5914
查看次数