C++中char类型'1'与(char)1比较返回false的问题咨询
原因说明
- 你代码中
char ch = '1'里的'1'是字符常量,标准ASCII编码下它的底层存储数值为十进制的49,对应可显示的数字字符1。 - 判断条件中的
(char)1是将整数1强转为char类型,对应ASCII编码中编号为1的不可见控制字符(SOH,标题起始符),底层存储数值为十进制的1。
二者实际存储的数值完全不同,所以判断条件不成立,程序输出No。
正确写法
如果要判断ch存储的是否为数字字符1,直接匹配字符常量即可:
#include <iostream> using namespace std; int main(void) { char ch = '1'; if (ch == '1') { cout << "Yes"; } else { cout << "No"; } system("pause"); }
如果需要将字符转为对应整数做判断,可利用数字字符ASCII连续的特性处理:
if (ch - '0' == 1) { cout << "Yes"; }
内容的提问来源于stack exchange,提问作者Thắng Nguyễn Đình
相关产品推荐
相关产品推荐

