楼主可以把下面的程序在计算机VC6.0环境下运行看看结果就知道哦
程序清单:
#include <iostream>
using namespace std
int main()
{
int t=1
while(-1)
{
printf("nice dream\n")
t--
if(t)
break
}
return 0
}
最后屏幕上输出两行:
nice dream
nice dream
哈哈
下面对楼主解释一下-1
在c中,-1你可以认为是非零,那么只要while里面的判断非零,就会循环执行,所以这里的
while(-1)的供能也是循环执行,类似于while(1)
第一次执行时候,t--之后t=0;那么if不成立,所以不会执行break
第二次执行的时候,t--之后t=-1;那么if成立,所以执行break,这样就会跳出while循环
所以一共执行了两次
嘿嘿~~~希望可以共同进步哦 楼主@_@
第一位符号位1为负,0为正。 正数的补码和2进制原码是一样的。
负数的补码:
1、先取绝对值|x| ;
2、对|X|+1 ;
3、对|X|+1 取反,就得到它的补码了 。
计算机中存放整型数据都是按补码的形式存放的。
扩展资料:
有符号数的表示方法是由硬件决定,而不是由C决定的。有三种表示方法:
1、二进制原码
0000 0001 表示 1
1000 0001 表示 -1
这个方法有个缺点是有两个零: +0 和 -0。这会引起混淆,而且用两个位组合来表示一个值也有些浪费。
2、二进制补码(最普遍的系统)
区别在于 singned 和 unsigned:
1)如果是无符号字节, 1000 0000 该组合为 128
2)如果是有符号字节, 1000 0000 该组合为 -128
第一种表示数的范围是 0 ~ 255;
第二种表示数的范围是 -128 ~ +127,对于一个二进制补码数取负数,最简单的方法就是取反、加 1。
3、二进制反码
通过反转位组合中的每一位以形成一个数的负数,例如:
0000 0001 表示 1
1111 1110 表示 -1
这种方式也有一个 -0:1111 1111。其范围是 -127 ~ +127。