c语言中的几个问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 04:10:04
1)你面是整型常数的是A 038 B OXAL
2)int a=1,b=1,c=1;
a=a+++b+++c;(主要是这里怎么看)
printf("%d",a);
3)以下是非法表达式的是A (char)(65+3)B 3.5%2/2
4)main()
{double d;float f; long l;int i;
i=f=l=d=20/3;
printf("%d %ld %f %f \n",i,l,f,d);输出结果是多少
}

1.a
2.过时的题目,现在ANSI/ISO C/C++ 标准(C99)里明确禁止这种写法
3.b
4.6 6 6.000000 6.000000

zhongbeilei 和 蜜桃烂透时 在第二题中说
++优于+

这是对的。但是这样的语法在一些严格符合ANSI C标准的编译器中(如gcc)中是不能编译通过的。

1) A
B中错误L不是十六进制的数

2)别管,错误的写法,过时的题目,永远不会再考了

3)B
%两边必须是整型数据

4)6 6 6.666667 6.666667

1是a,8进制的38
2是 a=a+(++b)+(++c)=5
3是 b取余不能是小数
4是 6 6.0000000 6 6.6666666

第一题不知道你问什么;
第二题输出4,一看就知道是a=(a++)+(b++)+c; ++优于+嘛!
第三题选B,3.5%2,浮点求余,你厉害! 还有说一声,你的A:(char)(65+3)的括号还是改为英文括号(),你输中文()不行的;
第四题输出:6 6 6.000000 6.000000
int i;肯定输整数啦;
long l;长整型你应该能理解吧;
float f;浮点型,为7位数,后面添6个0;
double d;双精度xx,为16位的,但是你在后面输出时写的是%f,所以还是以7位输啦;

1是a,8进制的38
B中错误L不是十六进制的数

2是 答案是4 a=(a++)+(b++)+c; ++优于+

3是 b 取余不能是小数 只能是整数运算。
4是 6 6 6.00000 6.000000 从右边向左看赋值运算。d是双精度,但后面是%f,为6.000000、

注意:20/3=6;(float)20/3=6.666667

看见这个就头疼。。