#include<stdio.h>
void main()
{
int x=2;
while(x--);
printf("%d\n",x);
}
#include<stdio.h>
void main()
{
int x=2;
while(x);
{x--;
printf("%d\n",x);}
}
却输出 1
0??
那麼之前的x=1,0的结果哪去了?不执行吗?
为什么不是 1
0
-1?
如果你写成 --x的话那就是
0
-1
while(x);
{x--;
printf("%d\n",x);}
的话第二次循环的时候x就等于0了啊所以就就不执行地下的 x--了
它 是怎么输出的啊?为什么第一个只输出一个数,x=2,1时输出的1,0哪去了?
而第二个却能输出三个数?
如果你
while(x--)
{
printf("%d\n",x);
}
这么写的话那也就能输出3个数了
C语言问题:为什么输出 -1?
首先,输出的结果是正确的。分析:第一次循环:初值x=2,由于是x--是后置运算符,所以先用2判断,成立,再减一,x=1,输出1;第二次循环:初值x=1,先用1判断,成立,再减一,x=0,输出0;第三次判断:初值x=0,先用0判断,不成立,循环结束,程序结束。
c语言这段码为何会输出-1?
在执行printf时会对x进行符号扩展【char表示有符号数据,所以会进行符号位扩展】,因为x的符号位为1,所以整个数据扩展为0xFFFFFFFF这样一个值,而这个值是-1的补码,按有符号数据打印出:-1。输出后执行x=x-1,这时x的值变为-2
C语言中 unsigned int a=-1 printf(“-1=%d\\n”,a); 为什么输出值
输出值为-1。原因:1、在C语言中整型常量的数据类型默认为int,所以unsigned int a = -1中,-1的类型是int类型。实际上是有一个隐式转换,即将int类型转成unsigned int类型。 这个转换的意义不大,因为没有超出unsigned类型的表示范围,所以a的机器码依然是-1的机器码。2、printf输出函数的控制字符...
c语言位运算-3>>2,为什么是-1
-3的二进制表示为 1000 0011 符号位向右移动后,正数的话补0,负数补1,也就是汇编语言中的算术右移.同样当移动的位数超过类型的长度时,会取余数,然后移动余数个位.
C语言:如下代码为什么得到结果是-1
因为你while后面有一个分号 相当于成立了,只执行一个空语句 所以当y减到-1才跳出的循环,执行后面的printf,所以是-1
c语言求教 为什么最后输出-1
你能不先自己想想给程序加上括号 if(x<y){ \/\/烂七八糟的if语句 } a = -1; 是不是甭管if怎么样 a=-1;一定执行。所以-1
为什么是“-1” 谢谢
d格式转换,是有符号整数,因而是-1(最高位的1表示负数,不表示数的大小)。要表示无符号整数用%u。关于C语言的格式转换,详见如下描述:1.转换说明符 a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)c 字符 d 有符号十进制整数 f 浮点数(包括float和doulbe)e(%E) 浮点数...
初学c语言,下面运行结果是-1,为什么???
x=2;while (x--); \/\/这个while循环不执行任何语句,只是在循环体中对x--操作 \/\/当x--到x==0时,则条件不成立,不过此时表达式是以0--结束的,\/\/所以在输出用到x的值时候会先执行个这还未完成的--操作,\/\/因此输出前先是完成了0- -操作,所以输出结果-1 printf ("%d\\n",x);} ...
为什么c语言输出-1不是65535 ?
变量x为无符号数,2Bytes的存储单元的二进制存储的数为 1111 1111 1111 1111,即0xFFFF。用%d输出是该变量存储单元内容的有符号数,此时第一位1代表负数。C语言默认有符号数存储为补码,所以:补码:1111 1111 1111 1111 反码:1111 1111 1111 1110 原码:1000 0000 0000 0001 因此输出原码的十进制,...
C语言(数据类型):请问这段程序的输出结果为什么是-1?
首先,这里有个前提,那就是你的编译器对unsigned long至少做4字节处理,而int做4字节处理 十进制数4294967295表示成二进制就是 11111111111111111111111111111111 也就是32个1,即对于四字节而言,全都是1 而32个1就是int型数据的-1的补码表示