关于回绕的一个小问题~
C语言回绕这个概念看了一下,大意就是说无符号不会产生溢出但会重新从最低(最高)位绕回来~下面有一段关于回绕的代码~
程序代码:
#include<stdio.h> void test1( void ); void test2( void ); int main( void ) { test1(); test2(); return 0; } void test1( void ) { unsigned char s=0; unsigned k=0; while (++s!=0&&++k!=1024); printf("%-4hhu%-4u\n",s,k); } void test2( void ) { unsigned char s=0; unsigned k=0; while (++s&&++k!=1024); printf("%-4hhu%-4u\n",s,k); }
具体问题就是输出结果就是
0 255
0 1024
就是问问为啥s的值都相等但k的值却不相等,正常来说while (s)和while (s!=0)的写法是等价的,但为啥这样就不等价了?~
[此贴子已经被作者于2018-4-28 15:31编辑过]