已知ch是字符型变量,下面不正确的赋值语句是----ch='a+b' ; ch='\0' ; ch='7' +'5' ; ch=5+9 ;为什么?
ch='a+b'是错的,'a+b'不是单bai个字符,应该是个字符串,不能直接这样赋值。 '\0'是转义字符 '5'+'7'是两个字符相加,返回的也是字符 5+9是整型。
但可以强制类型转化为字符,如果说这个错也有可能,因为没有强制类型转换,而应该是ch=(char)(5+9)。
扩展资料
在C语言中,字符常量有以下特点:
1、字符常量只能用单引号括起来,不能用双引号或其它括号。
2、字符常量只能是单个字符,不能是字符串。
3、字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如'5'和5 是不同的。'5'是字符常量,不能参与运算。
转义字符以反斜线"\"开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。例如,一些printf函数的格式串中用到的“\n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。
已知ch是字符型变量,则“ch='a+b' ; ch='\0' ; ch='7' +'5' ; ch=5+9”四句中不正确的是“ch='a+b' ”,因为‘a+b'是字符串而非单字符或单字符相应数值,也就是即不是单字符,也不是可以合法转换为单字符的表达式(值)。
因为char类型的数据实际上就是内存中的一个字节的变量空间,在机器中它就是一个0-255的数字,如:char ch='a';其实ch中存放的就是字符a的ASCII码,实际就是97,所以即使这样声明:char ch=97;和char ch='a'达到的效果是一样的。
扩展资料:
每个字符变量被分配一个字节的的内存空间,因此只能存放一个字符。字符值是以ASCⅡ码的形式存放在变量的内存单元之中的。如x的十进制ASCⅡ是120,y的十进制ASCⅡ是121。对字符变量a,b赋予'x'和'y'值:a='x';b='y';实际上是在a,b两个单元内存放120和121的二进制代码:
a 01111000
b 01111001
所以也可以把它们看成是整形变量。C语言允许对整形变量赋予字符值,也允许对字符变量赋整形值。在输出时,允许把字符变量按整形量输出,也允许把整形量按字符量输出。整形量为二字节量,字符量为单字节量,当整形量按字符量处理时,只有低八位字节参与处理。
参考资料来源:百度百科-字符变量