c语言。帮我解释下(3)的意思,半懂半不懂的。用个实际的例子解释下

Python022

c语言。帮我解释下(3)的意思,半懂半不懂的。用个实际的例子解释下,第1张

比如:

正整数:8位二进制有符号数表示的十进制数10为00001010,其中最高位是符号位,因为是正数所以取0,当此数扩展成16位(双字节)数据时扩展的方式是,目的16位数据最高位复制原数据最高位符号位,其余的位也复制符号位为00000000 00001010,仍然表示正的十进制数10。

负整数:8位二进制有符号数表示的十进制数-10为11110110,其中最高位是符号位,因为是负数所以取1,当此数扩展成16位数据时扩展的方式是,目的16为数据最高位复制元数据最高位符号位,其余的为也赋值符号位为11111111 11110110,仍然表示负的十进制数-10。

综合以上就是(3)中所述,目的数符号位复制原数据符号位,然后目的数的低位复制原数据低位不变,没有复制对应的位则全部复制符号位,这样无论正、负数据均能正确扩展。好比刚才的例子-10:原数据11110110,要扩展成16位xxxxxxxx 11110110,那么先将符号位左移到最高位1xxxxxxx x1110110剩余的位(x)全部填写符号位数值1:11111111 11110110

首先纠正一个错误,在C语言中是没有\这个运算符的。 \符号一般用来做换行标记或者作为转义字符标识。用在这里的是/,代表除法操作。也就是说,(double)(3/2)这里应用到如下几个知识点。 1 数值常量的默认类型。在没有特殊标识情况下,整型的数值常量,如题目中的3和2,都会默认为int型。 2 整型的除法。对于整型之间的运算,包括加减乘除模除等,结果都同样是整型值。在这里是int/int=int,而除法得到的小数部分,会被无条件舍去,注意是舍去而不是四舍五入。所以3/2=1 3类型的强制转换。当int型转为double型时,小数部分置为0。 综上,这个表达式的值就是一个双精度浮点型(double)的1.0。 可以以如下程序验证: #includeint main(){ printf("%lf\n", (double)(3/2))return 0} 对于%lf格式,默认输出6位小数,所以输出: 1.000000

在C语言中,大于的0的正整数都为真,

所以3为真,!3表示为假。

举例:

whlie(3)//如果whlie里面的条件是这样的话,那么这个条件一定为真,程序就会进入到whlie循环中去

while(!3)//如果是这样写,那么这个条件已经为假了,这个循环根本就不会执行。

希望这里对你有帮组