一下选项中非法的字符常量是A,‘\102’B'\65' C'\xff' D'\019'
转义字符,即反斜杠加数字或字母的形式(例如'\n'是换行符),转义字符本身就是一个字符。ABCD全是转义字符,D错误之处就在于它的数字部分019,在C语言里,一个数字是不需要以0开头的,一旦以0开头了,那么这个0所代表的意义是指八进制,例如01,是指八进制的1,因为八进制里是没有数字8和9的,所以09这样写是错误的,同理,D项的019这样写就错了,如果改为017那么就正确了。
同样的,C项以x开头代表了xff这个数是16进制,16进制里是有f的,数值上等于十进制里的15,如果C项改为xgg那么就错了,就是因为16进制里没有这个g。
数字前什么都不加,例如A和B项的102,65,C语言默认为十进制。
A对,是个转义字符B错,‘65’这是两个字符,是个字符串,表示形式也错了C对,是个字符常量D错,看着是转义字符,\后应该是2位八进制数,但里面出现了8,所以错
c语言中常量大于取值范围会怎样
c语言中常量大于取值范围的话,会变成0。
字符常量占一个字节(8位),无符号范围0~255,有符号范围-128~127,;一般用单引号直接输入,如‘a’、‘\127’等;超过时转换为非法的。
C语言对于int类型数据超出范围的处理,只有一个最简单的原则:截断处理,即超出int位长度范围的高字节被自动截掉。
1200是合法常量吗
是的。
但不能作为整型常量,只能是字符串常量(需要加引号)。
因为类C语言要求有数字参与的常量或变量的定义或赋值,其数字必须为纯数字序列或含有转义字符以及科学计数字符,即不能包含逗号,否则为非法常量且无法通过编译。
当然这种说法这并不绝对,如果有一种编译器在解释数字常量时,对逗号能忽略不计,那么很显然,这种定义方式也是可行的。

