在C语言里,如果定义变量时INT型,但输出是用%f,为什么结果是0.000000
因为你a和b都是整形的,在做除法的时候被截断了,因为除数按理说应该是0.5对吗?但是你要把它放到一个整形中是不行的,则0.5倍截断成0了。这样就可以解决问题:printf(%f,(float)a/b);试试看吧。
答案是0.000000,因为printf格式问题。若是:include stdio.h void main (){ float a=(int)(5*3)/3;printf(%f,a);getchar();/*这是个人喜好,请无视之*/ } 的话,会是000000。
(int)a); 原因很简单,格式串中的 %f 要求对应的参数必须是浮点型,否则输出就不正确。你已经看到了,输出是 b=0.000000,不正确吧?整型数据调为浮点型必须使用 (float)b,而不是改一下格式串为 %f 就能做到的。
C语言中的整数除法规则是返回结果的整数部分,比如1/3 = 0.3333333 整数部分是0,所以 1/3=0 4/3 = 3333333 整数部分是1,所以 4/3=1 而浮点数和double则是返回带小数部分的结果。
数值太小,用 %e 格式输出 就不是 0 了。联合体是共享内存。也就是说 i,ch, f 用 同一个内存地址。a.i=97; 就是在这个地方按 整型 数内存格式 存入 10进制数 97。
在c语言中,如果下面的变量都是int类型,则输出的结果是?
输出结果是为7;pad = sum++;先将sum(此时为5)赋值给pad(此时sum的值,赋值给pad,pad也为5),再进行sum++操作。pad++,该代码直接执行,结束后,pad由5+1操作,变为6。
pad++,++pad;printf(%d\n,pad);A) 7 B) 6 C) 5 D) 4 第一步:pad=sum++,pad为5,sum为6;先赋值再自增。
sum原始值等于?这是个逗号表达式,pAd=sum++,将sum值赋给pad,sum自增1。pAd++,pad自增1。++pad;pad自增1。
…|(m=a);printf(%d,%d/n,k,m)的输出结果是什么?为什么?
结果是1,0 ba为真,因此n=1 ||运算符一般是左边为1,则右边不计算,表达式值为1,因此k=1。m=0不变。
程序出错,只会显示其错误,不会有什么结果。
结果为真,所以k=1;但是注意,式中m和变量m并不是同一空间,在运算式中,m只做某一运算变量的象征,并不能代表全局变量m,因此全局变量m的值始终未改变,还是0。
printf(%d,%d\n,a,b);printf(%c,%c\n,a,b);printf(a=%d,b=%d,a,b);return 0;} 本例中四次输出了a、b的值,但由于格式控制串不同,输出的结果也不相同。
对于头文件,做展开操作。比如再某个.c中include了一个头文件,这一行预处理时就会被替换为头文件的内容。对于宏,比如你define了一个宏。这里就会把程序里面所有用到这个宏的地方替换掉。
%d%d\n表示输出两个十进制整型数据。并且输出的数据是紧挨着的,如果想分开点,可以增加宽度,比如%5d就是按照5的宽度输出一个整型数据,或者在两个格式符中间加上空格,逗号,等其他字符也可以,比如%d,%d。