有以下定义语句: double a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是
对于最原始的C语言规范(ansiC)两个都是错的.
因为 a++和++a都是表达式.
而对于新规范来说.
++a=b是允许的. 因为++a是先自加, 自加后,再赋值a=b, 虽然之前自加的就没什么意义了, 但确实不会引起冲突.
等效于a=b.
而a++=b; 则蕴含了a=b a=a+1两个, 或许书写规范的人觉得这样会带来很多的不确定性,所以一直没有合法化.
(c+w)%(int)a : 做 % 运算前, 把a 强制类型转换成了int,当然正确了。
w=a==b 可以看成是 w = (a==b)
(a==b)的结果是一个逻辑值,不能赋值给w
A.赋值号左边只能是变量,不能是表达式B,取模运算的数据只能是整型,a强制转换成整型,但b为实型,整型加实型为实型
D,int型变量在内存中占的空间比double型少,所以不能把a,b的值赋给w
答案是C,(c+w)%(int)a
A、赋值号的左边只能是变量,不能是表达式
B、取模运算的数据只能是整型,(int)a把a强制转换成整型,但b为双精度数据类型,双精度数据类型加实型为双精度数据类型,除数是一个实数而不是整数,因此不能使用%运算符
C、被除数是两个整型数相加,运算结果为整型,除数为(int)a,也为整型,所以答案C正确
D、int型变量在内存中占的空间比double型少,所以不能把a,b的值赋给w
扩展资料:
double(双精度浮点型)是计算机使用的一种资料型别。比起单精度浮点数(float),double(双精度浮点数)使用 64 位(8字节) 来储存一个浮点数。
它可以表示十进制的15或16位有效数字,负值取值范围为 -1.7976E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1.797693E+308。
目前在一般的电脑中,int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1]
long关键字表示一种长整型数据,是编程语言中的一种基本数据类型,为long int 的缩写,默认为有符号长整型,含4个字节,取值范围为:-2^31 ~ (2^31 -1)。
参考资料:
百度百科——double
百度百科——int
百度百科——long
定义语句double a 0.0 b 1.1 怎么错了? - 知乎
在定义变量时,a和b不应使用分号隔开。分号在编程语言中用于分隔语句,确保每条语句被独立执行。因此,在双精度型变量定义中,应写作:double a = 0.0;b = 1.1;这里,b的定义前没有变量名,导致编译器无法识别b,进而报错。正确做法是明确地为每个变量分配一个名字,并在赋值语句中明确指出,以...
设有定义:double a[10],*s=a;以下能够代表数组元素a[3]的是( )。
【答案】:B 语句·s=a;表示指针变量s指向一维数组a的首地址。a[3]表示引用数组a的第4个元素,+(s+i)表示引用指针8所指数组a的第i+1个元素,选项A、C、D的表示方法错误,只有B选项正确。
若有定义:double a=22;int i=0,k=18;为什么(i=a%11)是不符合C语言规定...
因为取余运算符(%)是对整形变量(或常量)取余数,而你的变量a是double型的,所以编译肯定会报错的。而我们知道整形可以被自动转换为float或者double,但是反过来是不行的,所以你要是想用上面的语句的话,需要加强制类型转换,即:i=(int)a%11....
2018年计算机二级考试C语言试题及答案(2)
2018年计算机二级考试C语言试题及答案(2)选择题(每小题1分,共40分)1[单选题] 若有定义语句:double a,* P=&a;以下叙述中错误的是()。A.定义语句中的*号是一个间址运算符 B.定义语句中的*号是一个说明符 C.定义语句中的P只能存放double类型变量的地址 D.定义语句中,*P=&a把变量a的...
C语言里面的%lf是表示什么意思
lf是C语言中double的格式字符,用于格式化输入输出。double为双精度浮点类型,占8字节空间。定义一个double的变量可以写作:double a;输入语句可以写作:scanf("%lf", &a);输出语句可以写作:printf("%lf",a);这里的printf和scanf中,就是%lf的用法了。
C语言考试填空,急啊~~~高分悬赏~~据说是福建师范大学以前的试题,会的帮...
1.若已知a=1,b=2,则表达式!a<b的值是【 1 】。2.若有以下定义 double a[10];则a数组元素下标的上限为【 0 】 ,下限为【 9 】 。1.以下程序的输出结果是【 2,1 】 main(){ int a=1, b=2; a=a+b; b=a-b; a=a-b; printf("%d,%d\\n", a, b );} 2.下列程序...
C语言简单程序,帮看看哪错了
错误点有3个:输入一个实数那行有个引号用了中文符,应该改为英文符;最后输出-a那段语句后面没有写“;”;定义变量a时为双精度浮点数,而输入时存为了单精度浮点数,存在溢出故障,会导致运行错误,见下图:应该改为如下 include<stdio.h> main(){ double a;printf("请输入一个实数:");scanf(...
c语言,有以下语句double a,b;int w;若各变量以正确赋值,则正确的表达 ...
对于最原始的C语言规范(ansiC)两个都是错的.因为 a++和++a都是表达式.而对于新规范来说.++a=b是允许的. 因为++a是先自加, 自加后,再赋值a=b, 虽然之前自加的就没什么意义了, 但确实不会引起冲突.等效于a=b.而a++=b; 则蕴含了a=b a=a+1两个, 或许书写规范的人觉得这样会带来...
C语言double的用法?
double是一种数据类型 具有比float更高的精度 在32位机中以8个字节储存。用法:同int float 一样,用于声明变量或定义函数的返回值类型,或可用于类型强制转换。例: double a;\/\/变量声明 double sqrt_(double b);\/\/定义函数返回至类型及形参类型 c=(double)3;\/\/将“3”强制转换为...
一道C语言选择题求解
只有C是对的,A的问题,数字在计算中都是以二进制存储的,受二进制的限制,很多数字是无法精确存储的,只能存储近似值,比如0.1或者1\/3这种。B,声明之后b并未赋初值,b中内容是个随机数,导致a=b+xx无意义。D,同B,这个取决于编译器以及是否是全局或局部变量,一般认为都是随机数,并不会自动...