关于回绕的一个小问题~
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编辑过]




