short int c未理解的整数环绕/短int反转,赋值和打印之间的差异

Fal*_*ler 5 c types integer integer-overflow

以下代码片段

short int k = -32768;
printf("%d \n", -k);
k=-k;
printf("%d \n", k);
Run Code Online (Sandbox Code Playgroud)

版画

32768 
-32768
Run Code Online (Sandbox Code Playgroud)

我认为两张照片都是平等的.有人可以解释一下这个区别是什么以及为什么这个任务k=-k会导致环绕?很难在网上找到解释,因为我真的不知道该怎么去谷歌.

Sou*_*osh 2

那么,打印一个short,您需要使用长度修饰符。

将格式字符串更改为%hd.