leg*_*o69 1 c c++ comparison ascii
我有这段代码
char *str = “123”;
if(str[0] == 1) printf("Hello\n");
Run Code Online (Sandbox Code Playgroud)
为什么我不能Hello提前收到我的谢意!编译器如何完成这种比较if(str[0] == 1)?
Gre*_*ill 14
你想这样做:
if (str[0] == '1') ...
Run Code Online (Sandbox Code Playgroud)
不同之处在于您str[0]要与数字 1 进行比较,而上面的代码str[0]与字符 '1'(ASCII值为49)进行比较.并非所有编程语言都以这种方式互换地处理字符和数字,但C确实如此.
有关计算机如何将数字映射到字符的详细信息,请查看ASCII.
首先,正确的方法是这样做:
if(str[0] == '1')
Run Code Online (Sandbox Code Playgroud)
要么 :
if(str[0] == 49)
Run Code Online (Sandbox Code Playgroud)
其次,你必须采取之间的差异的护理1和'1'
1 是整数值...'1'是一个ASCII等于49 的字符这意味着:
('1'==1)是假的!!
不过('1'==49)是真的!!
当您'1'使用C/C++ 编写时,它会自动转换为相应的ASCII 49,这就是'1'在C/C++中实际表示的方式
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |