C语言%f输出负数
算法有错误,最终计算结果是负数。输出自然会是负数。例如:int a=1;int b=a-2;printf(b=%d,b);//输出结果:b=-1超过变量类型的最大取值范围,发生溢出。例如Turbo C里int是16位,取值范围-32768~32767。
我用我的vc0编译的是对的,看你负数可能是变量初始化之后就有的数,说明B和C没有从屏幕上传到值,S的值也跟他们一样,感觉也是没有被重新赋值,他们的值都还是初始的值。建议调试运行下,跟你编译器有关吧。
将 printf(%lf,y); 中的“%lf”改为:“%f”试试。printf(%lf,y); 的输出是:long double 类型的数据。
c语言%的正负取决于左边的数还是右边的数
如果%左边的操作数为负数时,则模除的结果为负数或者0;如果%左边的操作数为正数时,则模除的结构为正数或者0。“c”为字符类型,其235对应二进制位0xFD,也就是-3的补码形式,则c变换为int为-3。
(百分之左边为正则取余的结果为正,反之左边为负值结果就是负值)。
要求两个操作数均为整数(或可以隐式转换成整数的类型)。标准规定:如果%左边的操作数为负数时,则模除的结果为负数或者0,如果%左边的操作数为正数时,则模除的结构为正数或者0。
取余,也就是求余数,使用的运算符是 %。C 语言中的取余运算只能针对整数,也就是说,% 的两边都必须是整数,不能出现小数,否则编译器会报错。
C语言中的负数是怎么表示的?
1、最高位是符号位,1表示负数,0表示正数。这里-5,所以取1。接着是8位阶码,阶码用移码表示,最高位为符号,0表负、1表正;单精度要在原值上+127实现,即加01111111。
2、第一位符号位1为负,0为正。 正数的补码和2进制原码是一样的。负数的补码:先取绝对值|x| ;对|X|+1 ;对|X|+1 取反,就得到它的补码了 。计算机中存放整型数据都是按补码的形式存放的。
3、C/C++规定,16进制数必须以 0x开头。比如 0x1表示一个16进制数,而1则表示一个十进制,0xff,0xFF,0X102A,等等.其中的x不用区分大小写。C/C++中,10进制数有正负之分。比如12表示正12,而-12表示负12。
4、写成10进制 可以直接加负号 写成16进制 最高位为1即可。负数表示为补码, 最高位为符号位 为1 其它位为原码按位取反加一。
5、c语言有两种数据类型,一种是整型,一种是浮点型 ,整型类型一般用的原码表示,浮点类型一般用的IEEE754标准进行编码。整型数中原码表示正负数,取最高位为符号位,以8位二进制数来表示1和-1。