计算机c语言,有几个问题,望解答,准备计算机二级的菜鸟在此谢过!!!(第三波)

我估计已经有很多路过的大神看到这个标题都觉得很熟悉了,哈哈!o(∩_∩)o...
以下是我今天看书遇到的问题以及昨天问题又延伸的一点问题~上题
【1】 C语言中的每条可执行语句和非执行语句最终都被转化成二进制的机器指令。——这句话是错在“非执行语句”上,我的问题就是像“注释”这样的语句就是“非执行语句”么?
【2】 -0xf ——这个地方的f是float的意思么?0x是不是就是0x0?就是说是十六进制的0?或者说这种表达方式是错的?
【3】 -80.0e 不合法是因为e后面没有跟整数么?他的含义不是-80.0e1么?
下面是具体的题目:
【1】 表达式(int)((double)(5/2)+2.5)的值是4 ——答案说如果写成(int)(((double)5/2)+2.5)则表达式的值是5 ——为什么?
【2】 /*/programming/*/ ——这种表达对么?不应该是这样的么?/*programming*/
【3】 当把以下四个表达式用作if语句的控制表达式时,有一个选项和其他三个选项含义不同,这个选项是(D)
(A)k%2
(B)k%2==1
(C)(k%2)!=0
(D)!k%2==1
答案说(D)项也可以写作(!k)%2==1。我的想法是ABC三个选项K要分奇偶讨论,K为奇ABC都为真;K为偶,ABC都为假;然后答案就说K=0时,!K%2的值为1,我的问题就是这个时候不用讨论奇偶了么?我的思路是,K=0,则!K为非零,如果!K为偶,则!K%2的值为0,否则为1。不知道对不对??
【4】 有以下程序
main()
{ int m=12,n=34;
printf("%d%d",m++,++n); printf("%d%d\n",n++,++m); }
程序运行后的结果是A)12353514
——我怎么觉得应该是12353614?
【5】以下程序运行输出的结果是(10)
main()
{ int x=20;
printf("%d",0<x<20); ——难道这个地方的“0<x<20”是“x>0或x<20”的意思?
printf("%d\n",x>0&&x<20);
}
还有一个问题就是为什么答案是“10”而不是“1,0”?

暂时就这么多~哎... ...复习C语言简直要了命啊,不过我会坚持到最后,能不能考过2级也只能尽力了... ...感谢大神帮助~
最新回答
果味小可爱

2024-05-02 00:41:38

1.整数除整数还是整数,所以5/2=2,所以(double)(5/2) = 2.0。而5.0/2=2.5,所以(double)(5)/2=2.5。还有运算符优先级和强制类型转换的问题,自己看看书吧

2.为什么不可以,c语言注释格式/* */,以 /* 开始以 */ 结束,中间的竖线只是注释文本的一部分,就当时abc好了

3.ABC分析是对的,D的有点问题,!k只有俩值:0和1,别考虑奇偶了

4.++在前先加再取值,++在后先取值再加。先看m,m=12,第一个输出++在后,先去值再加,输出结果12,m值变为13,第二次输出++在前,先加再输出,输出结果为14。n同理,第一次先加再取值,输出35,第二次先取值再加结果还是35

5.0<x<20不是你说的那样,实际是(0<x)<20,先判断0<x,由于x=20,结果为1,再拿这个结果与20比较大小,即1<20,结果还是1。不知道你为啥认为会打印个逗号呢
久梦由你

2024-05-02 11:39:55

1.非执行语句不是注释
int c;
float x;
这些声明语句才是非执行语句,它们在``编译的时候用``,告诉电脑有一个叫c和x的变量,运行时不执行

counter = 1;
y=x+2;
这些有运算符`函数`等等组成的式+分号 `就叫可执行语句````
运行的时候执行的`
2.-0xf中的f,指的是十六进制下的数字,它在十进制下的大小为15,十六进制下的16个数字分别为0~9,a,b,c,d,e,f,分别对应十进制下的0~9,11,12,13,14,15, 而前面的0x表示该数字是一个16进制的数字,就像0表示八进制一样
3.应该是因为e后面没跟整数

其他问题楼上都回答了,我就不再说了。这些字都是纯手打的,希望楼主采纳
莫名的小情绪

2024-05-02 03:01:19

(1)非执行语句应该还有变量定义,函数声明语句吧
(2)十六进制,f就是1111
绝命小红帽

2024-05-02 08:50:03

printf的双引号内是格式控制符,其内没有“,”,所以输出中没有“,”