一道c语言题?

int a=1,b=2,c=3,d=4,e=5;
k=a>b?c:d>e?d:e;k的数值是多少?

k的值是:5

分析:

题目需要了解条件运算符(? :),条件运算符形式:

ex1 ? ex2 : ex3

如果ex1为真(非0),那么整个表达式的值和ex2相同;如果ex1为假(0),那么整个表达式的值与ex3相同

理解定义之后再看题目:

int a=1,b=2,c=3,d=4,e=5;

k=a>b?c:d>e?d:e;

(1)先判断a>b,即1>2不成立,所以表达式的值为d>e?d:e。

(2)此时再判断d>e?d:e。d>e,即4>5不成立,所以表达式的值是e

(3)将e赋值给变量k,变量e的值是5,k值也是5。

所以最终结果是5。

扩展:条件运算符可以改写为if else的形式。

温馨提示:内容为网友见解,仅供参考
第1个回答  2022-04-25
k=5
? : 是一个二目运算,从右至左。
其中,m=a>b?x:y 等价于
if(a>b) m=x; else m=y;
所以有
k=a>b?c: (d>e?d:e);

k=a>b?c:e ;
所以
k=e=5本回答被提问者采纳

有一道C语言的题目:已知:char a; int b; float c; double d;则计算表...
该题选择D答案:1、a定义的是char型,实际上他也可以看做是int型,你试过没有将一个char型的变量用%d的格式输出后,为一个整数,该整数是该字符的ASCII码,是十进制而已。所以a*c之后的类型为float型 2、a*c+c自然也就是float型了。。那么最后就变为float减去一个double型,因为double型表示的...

一道C语言题目,看图~大神帮忙解答下吧!急急急急急!!在线等
答案是D 在C语言中数组赋值可以如A,那样,【】里面定义了长度5{}中有最大不超过5个值,则赋值成功 B在5个数值之内所以也是正确的 答案C,就是另外中赋值方法,在【】中不定义长度,因此数组a[]的实际长度取决于{}中的值的数量,也就是说在C答案中有5个0作为数值,因此C答案中的a[]的实际...

一道C语言
答案C char str[][20]={"Hello","Beijing"} 这表示str是个二维数组,由两个一维数组构成,每个一维数组是20个字节构成。p=str 这表示p是指针,指向二维数组str的首地址 p+20 这表示由p指向的地址向后偏移20个字节,刚好指向了第二个一维数组“Beijing”了 strlen()它是字符数组长函数,对“Beij...

一道C语言选择题,求答案及解析,好评
答案为:C 分析:1、switch(表达式)中的表达式不能为实型,所以A错误。同时B的用法错误,如果B改为 switch((int)x)那么B也是正确的;2、case 常量表达式: 中的 常量表达式不能是实型,所以A中的1.0和2.0都是错误的,同时该表达式也不能是变量或含有变量的表达式,所以D错误,因为D中有 case...

有一套C语言的题,求大神解答啊……
16.C 啥叫自动,不定义就自动呗 17.A c没有这毛病 习惯上宏名用大写字母表示,以便于与变量区别。但也允许用小写字母。18.C 字符串“abcde”还没分配地址 19.C 20.C语言中结构体类型变量在程序执行期间 因为所有数据存起来 在使用时调用哪一个,根据条件查找到就在内存中驻留 根据自己的知识和...

几道简单的C语言题目
C: int a=10; b=20; D: int a=10; b=20,【C】3.以下选项中正确的C语言常量是:A: 0xEfGh B: 'XYZ'C: 12.34e5 D: '\\5A'【A】4.设有double x;char s[50];输出双精度浮点数x和字符串s,正确的语句是:A: printf("%lf %s",x,s); B: printf("%ld %s",...

C语言简单题
m=++i;因此m=9,这里i为9,这个容易理解(第一题);j第一次执行的时候n=j--,这里n=3,j=3;到第2次执行J的时候,即是执行printf("%d,%d,%d,%d,i,j,m,n)语句,这里的j就为2 因此执行结果为:9,2,9,3 第8题:因为a>b>C是真,在C中都用数值1表达真,0表达假,所以m=1...

c语言的一道填空题 很简单
执行顺序从右向左进行。首先,计算表达式a*a,结果为36。此时,a的值被更新为36。接着,执行a=a-36,即36-36,结果为0。因此,a的值变为0。最后,执行a=a+(-30),即0-30,结果为-30。最终,a的值为-30。

一道c语言的题目(40
答案是1、a^b 1、^运算是按位来对比,如果不一样的话,就为1,一样就为0.所以,当执行完a^b 的时候,就可以得到10101101;(高位取反,低位不变,)2、| 是或运行,有1 的话就得到 1, 两种为0 则为0;所以,执行a|b 的话,得到的是 11111101;(高位置1)3、 &与运算,两种为1则为1,...

c语言 一道简单的选择题
答案是D。分析:按%d%d%d格式输入时,要求用空白(空格、换行等)作为分隔符。当输入3 4,5时,因为3 4符合输入格式的要求,所以会将3赋值给a,4赋值给b。但接下来遇到了逗号,不符合输入格式的要求,scanf函数会提前退出,并返回2(表示成功赋值了2个值),而c不会被赋值(保持它原来的值2),...

相似回答