楼主可以把下面的程序在计算机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循环
所以一共执行了两次
嘿嘿~~~希望可以共同进步哦 楼主@_@
c语言中-1的绝对值是1,二进制00000001,取反为11111110,-1为11111111,取反是00000000。
1、所有正整数的按位取反是其本身+1的负数;
2、所有负整数的按位取反是其本身+1的绝对值;
3、零的按位取反是-1(0在数学界既不是正数也不是负数);
0的原码:00000000000000000000000000000000
取反:11111111111111111111111111111111
最高位是1所以是负数,求其原始数据,方法是
再次取反加1(符号位不变)
取反:10000000000000000000000000000000
加110000000000000000000000000000001
所以是-1
扩展资料
C语言按位与运算符(&)
按位与运算将两个运算分量的对应位按位遵照以下规则进行计算:
0&0=0,0&1=0,1&0=0,1&1=1。
即同为1的位,结果为1,否则结果为0。
例如,设3的内部表示为
00000011
5的内部表示为
00000101
则3&5的结果为
00000001
按位与运算有两种典型用法,一是取一个位串信息的某几位,如以下代码截取x的最低7位:x&0177。二是让某变量保留某几位,其余位置0,如以下代码让x只保留最低6位:x=x&077。以上用法都先要设计好一个常数,该常数只有需要的位是1,不需要的位是0。用它与指定的位串信息按位与。