已知ch是字符型变量,下面不正确的赋值语句是----ch='a+b' ; ch='\0' ; ch='7' +'5' ; ch=5+9 ;为什么?

已知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”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-11-24

已知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语言允许对整形变量赋予字符值,也允许对字符变量赋整形值。在输出时,允许把字符变量按整形量输出,也允许把整形量按字符量输出。整形量为二字节量,字符量为单字节量,当整形量按字符量处理时,只有低八位字节参与处理。

参考资料来源:百度百科-字符变量

本回答被网友采纳
第2个回答  推荐于2017-10-06
ch='a+b'是错的,'a+b'不是单个字符,应该是个字符串,不能直接这样赋值。'\0'是转义字符'5'+'7'是两个字符相加,返回的也是字符5+9是整型,但可以强制类型转化为字符,如果说这个错也有可能,因为没有强制类型转换,而应该是ch=(char)(5+9)。本回答被提问者采纳
第3个回答  推荐于2017-09-26
  已知ch是字符型变量,则“ch='a+b' ; ch='\0' ; ch='7' +'5' ; ch=5+9”四句中不正确的是“ch='a+b' ”,因为‘a+b'是字符串而非单字符或单字符相应数值,也就是即不是单字符,也不是可以合法转换为单字符的表达式(值)。