这种就属于比较无聊的问题了,但凡题主真的编译一下,哪怕不运行,都应该知道发生了什么:
$ make 2 cc 2.c -o 2 2.c: In function ‘main’: 2.c:4:12: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘65535’ to ‘-1’ [-Woverflow] 4 | char x=0xffff; printf("%d
", x--); |
以上 是 gcc 9.3.0 的编译结果。
编译器非常明确的告诉你 65535 赋值给 char 的时候因为溢出,被强制转化为 -1。
然后本题的结果是 -1。
当然,在其它平台下可能有其它答案,这里我只是说在普通的平台下一个最普通的答案。
另外给一个小彩蛋:Linux下任何单独的 .c 文件,只要使用 make 文件名(不带扩展名)就可以编译了,不需要写 Makefile。系统自带的编译方法,解决简易文件编译的好方法。如果需要设参数可以直接设定到环境变量。