以下全部都是我做题目时遇到的问题,谢谢各路的大神的耐心解答。上题... ...【一】 若要保存带有多位小数的数据,应使用双精度类型。 答案说这句话是对的,我的疑问就是,不是应使用长双精度么?【二】 C程序中的注释只能出现在程序开始的位置和语句的后面。 答案说这句话是错的,我的疑问是,这句话是错在什么地方?【三】 我在看C++的书时,说道标识符不能和关键字重复,在看C语言的书时却又说标识符包含关键字、预定义标识符、用户标识符。我的理解是C++书里说的标识符其实是用户标识符,不知道对不对?下面是具体的题目:【一】{ char c1,c2 c1='A'+'8'-'4' c2='A'+'8'-'5' printf("%c,%d\n",c1,c2);}已知A的ASCII码为65.程序运行后的结果是:E,68看答案解析我已经知道%c是表示字符,%d是数值,但是我没从书上找到来源,所以不知道怎么来的,求解答。希望能把最后一句解释一下,顺便告诉一下我来源。【二】有定义语句:intk;,则“这时k中的值无定义”。我的问题是,我觉得“这时k中无任何值”,因为我觉得已经对k定义整型,只不过没有赋值而已。【三】以下选项能用作数据常量的是:115L。我的问题是L在这里是什么意思?是指ASCII码里的值么?【四】设有表达式:(EXP)?i++:j--,则与以下表达式与(EXP)完全等价的是(EXP!=0);我的问题是,EXP不是等于i++或者等于j--么?为什么会和EXP不等于0等价?【五】以下选项中,合法的一组C语言数值常量是 A)028 .5e-3 -0xf ——028是八进制的表示;0.5*10^(-3);-0x0 ;这是我对各项的理解,不知道对么? B) 0Xa23 ——这个是什么意思?八进制的Xa23?X和a是什么? C)0x8A——这个是什么意思?十六进制的8A?A是什么?然后就是,类比十进制,十八进制的数里最大的数是18,八进制最大的是8,这样理解是对的么??【六】以下合法的字符常量是(A)A)'\x13'B) '\081' ——错在8对么?最大的是7对么?C) '65' ——应该是"65"对么?D) "\n" ——应该是'\n'对么? 我打这些问题也很花时间,希望能继续与到好心大神帮忙解答,虽然我知道有些问题在大神看来很白痴,但我正努力让这些问题变的不是问题,先在此谢过!!!
【1】我也觉得是长双精度,不过长双精度对于初学者来说很少用到,可能是因为这个原因,所以答案是双精度吧。【2】C语言的注释可以放在程序的任何地方,只要写在注释符/**/中就可以。【3】应该跟你理解的也要,C的类型int也是标识符,命名的时候不要和那些系统默认的符号重复就可以了。【4】char c1,c2/*定义两个字符型变量*/ c1='A'+'8'-'4'/*这些加减数都是字符型的,转换成ASCII码然后再进行加减*/ c2='A'+'8'-'5' printf("%c,%d\n",c1,c2);/*之前你定义了c1为字符型数据,所以可以用%c来输出,字符型和整形数据是可与等效代换的,所以字符型c2也可以用整形int即%d输出*/这个你可以看看数据类型这方面的资料。【5】int k,定义了一个变量k,变量代表内存中具有特定属性的一个存储单元,用来存放数据,变量名代表一个地址,可以往里面存放数据。【6】l表示long的意思,就是长型数据,比如115l就表示115这个值是long int型常量。long int和Long int是一样的。【7】(EXP)?i++:j--;的意思是说,如果EXP不等于0,即为真(真表示1,或者任意字符或数字),则进行1++,否则进行j--,你这道题目的意思应该是要你选择下面哪个选项跟(EXP)等价,所以选择(EXP!=0)。【8】A我看不明白,B和C的0x和0X代表十六进制,a和A代表十六进制的10。8进制最大的数是7,0-7.十六进制为0-15.【9】最后一道题你的分析是对的了。不过"65"也不是字符常量,是字符串了。
[1],字符就是整型类型,加减就是ASCII码的数值加减。%c %d就是格式化标识符,没什么好说的。记住就行。[2],你是对的,有值,但是是随机值。[3], L是long型。[4],:(EXP)?i++:j--, 先判断EXP值,如果是true,就是取i的值,然后i++,为false,取j值,后j--。[5]:0x开头表示十六进制,其后每个字符代表4位,A就是就是十六进制0到F中,比9大那个。。二进制最大是1,八进制最大是7,十进制最大是9,类推。。。[6]:字符常量用一个单引号括起来,中间只有一个字符。