code Block 编译器
signed char a
unsigned char b
两个变量从0~127相对应的输出,得到效果为:
1 = 1
2 = 2
3 = 3
……
在a = 127时,将a赋值为 -128,a与b继续对应输出直到a = -1, b = 255,
以下是我写的代码:
#include<stdio.h>
int main( void )
{
signed char a;
unsigned char b = 0;
for( a = 0; a <= 127 && b <= 127; a++ )
{
b++;
printf( "%d = %u\n", a, b );
if( a == 127 )
{
for( a = -128; a <= -1; a++ )
{
b++;
printf( "%d = %u\n", a, b );
}//end for
}//end if
}//end for
return 0;
}
输出的结果:
为什么输出不是从1开始?
为什么会输出了1 = 1之前的内容?
麻烦哪位给讲解一下,到底是为什么。
你的循环跑的不对啊:
外面的循环a从0开始,b从0开始,但你main函数里面第5行b++,让你第6行的打印b会比a大1
a跑到127,此时b跑到128,进入内循环
内循环当a跑到-2的时候,b等于255
然后a = -1,b由于是unsigned char,溢出了,会从0开始
此时内循环结束,a = -1,b = 0
于是你的外循环又开始跑,结果这次你错上加错,导致结果反而像题中要求出正确结果了
总之你这个程序问题多多,我给你个简单的版本: