如题所述
第一题
A.078不合法,试图表示8进制中不存在的数字8,故而报错
B.5L合法,表示长整型5
C.9e7.5不合法,e后必须为整数
D.'a1',编译器会生成一个警告指出这是一个多字符的字符常量。你可以认为它合法,也可以认为不合法。
第二题
A.错误,应该为'\101'
B.错误,应该为'\x41'
C.正确,为ASCII码值
D.错误,这是字符串"A"。追问
A.078不合法,试图表示8进制中不存在的数字8,故而报错
B.5L合法,表示长整型5
C.9e7.5不合法,e后必须为整数
D.'a1',编译器会生成一个警告指出这是一个多字符的字符常量。你可以认为它合法,也可以认为不合法。
第二题
A.错误,应该为'\101'
B.错误,应该为'\x41'
C.正确,为ASCII码值
D.错误,这是字符串"A"。追问
为什么第十题A选项应为‘\101’呢,八进制的话不需要区别吗?例如0101
并且C选项十六进制,前面不应该是ox吗?为什么\x41就行了?
追答转义序列\ddd就表示八进制数,最多三位,前面无需加0。\0101已经超出了三位限制,会被解释为字符'\010'+字符'1',结果和第一题D选项相同。
追问那编译器怎么知道是八进制呢?
并且十六进制可以只加x吗?
追答我已经说了,\ddd的形式就代表八进制ASCII码。这是C语言标准。
不是“可以只加x”,而是必须表示成\xhh的形式,代表十六进制ASCII码。这也是C语言标准。如果写成\0x41会被解释为字符'\0'+字符'x'+字符'4'+字符'1',结果同第一题D选项。
谢谢大佬😄😄
温馨提示:答案为网友推荐,仅供参考
第1个回答 2018-03-13
C++允许使用一种特殊形式的字符常量,就是以“\“开头的字符序列,'\x89'就是十六进制代表的字符,\0是空字符(就是什么都不做,不是空格字符的意思哦),'\092'就是八进制代表的字符,但'\092'是错的。望采纳。追问
请问能不能逐项解释一下?我刚学c++不太懂