为什么 0.1e+6是C语言的合法常量,而‘cd’不是? 为什么 char A=65+1, b='b';是正确的定义语句?

表达式3.6-5/2+1.2+5%2的值是?为什么5/2的结果是2不是2.5?
以下不能正确表示代数式的C语言表达是?
A 2*a*b/c/d B a*b/c/d*2 C a/c/d*b*2 D 2*a*b/c*d

0.1e+6是一个科学计数法表示的常量,也就是10的6次方
cd是变量!
A=65+1中65是指ASCII码,对于字符数据可以直接用ASCII码来赋值
b='b'中第一个b是字符型变量,第二个是字符b
3.6-5/2+1.2+5%2=7.8
其中5/2=2,因为两者都是整型数,计算结果也会是整型,所以0.5被抹去了
最后,从编译的原理来讲 那四个表达式都没错
例如:
#include <iostream.h">
void main()
{
int a,b,c,d,x,y,z,w;
a=15;b=2;c=2;d=2;
w=0;x=0;y=0;z=0;
x = a/c/d*b*2;
y = 2*a*b/c/d;
z = a*b/c/d*2;
w = 2*a*b/c*d;
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
cout<<"z="<<z<<endl;
cout<<"w="<<w<<endl;
}
完全可以运行
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-18
0.1e+6是C语言中实数的指数表示法表示的,当然是合法常量,而C语言中规定用单引号''引起来的
是字符常量,且必须是单个字符,所以'cd'是不对的,它包含了两个字符呀。
语句char A=65+1,b='b',其意思是定义两个字符量变量A和b,其中A在定义时赋值66,b赋值'b',因为字符是以ASCLL码在计算机中存储的,所以可以用数字来表示其值呀,两个都对。
5/2因为两个数都是int型,所以运算结果也为int型,自然就要把小数省去等于2
表达式3.6-5/2+1.2+5%2的值是3.8
第2个回答  2011-02-18
1 0.1e+6符合float类型的科学计数法定义,是C语言的合法常量;C语言的字符常量只能是一个字符,因些'cd'不是字符常量;
2 char A=65+1,b='b';等价于char A='B',b='b'; 因此是正确的;
3 表达式3.6-5/2+1.2+5%2的值是3.8000;
4 5/2表示整数相除,结果为整数,因此值为2;
5 ABCD都是正确表示的代数式(有可能题目有误)。
第3个回答  2011-02-18
5/2的结果是2,5/2.0的结果是2.5

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网