我有这段代码
char *str = “123”;
if(str[0] == 1) printf("Hello\n");
为什么我不能提前收到Hello
谢谢!
编译器如何完成此比较if(str[0] == 1)
?
答案 0 :(得分:14)
你想这样做:
if (str[0] == '1') ...
区别在于您将str[0]
与数字 1进行比较,而我上面的代码是将str[0]
与字符进行比较 {{ 1}}(其ASCII值为49)。并非所有编程语言都以这种方式互换地处理字符和数字,但C确实如此。
有关计算机如何将数字映射到字符的详细信息,请查看ASCII。
答案 1 :(得分:8)
首先,正确的方法是:
if(str[0] == '1')
或者:
if(str[0] == 49)
其次,您必须注意1
和'1'
1
是一个整数值...... '1'
是ASCII等于49 这意味着:
('1'==1)
是假的!!
然而('1'==49)
是真的!!
当您在C / C ++中编写'1'
时,它会自动转换为相应的ASCII 49
,这就是'1'
在C / C ++中实际表示的方式
答案 2 :(得分:2)
这是因为您要将str
的第一个字符与数字1进行比较。'1'
的实际字符代码为49.因此,其中任何一个都可以使用:
if (str[0] == '1')
if (str[0] == 49)
请注意,1
与'1'
不同。第一个是数字,第二个是字符。如果您想了解更多相关信息,请查看此处:http://en.wikipedia.org/wiki/Character_encoding
答案 3 :(得分:2)
* str是一个指针类型char var ...存储字符串的基地址.str [0]保存第一个char ...即1,它也是一个char ..so,我用它表示与是' 1' ...
试试这个:
if(str[0] == '1')
printf("Hello \n");
答案 4 :(得分:1)
你要将char与int进行比较,它应该是
if(str[0] == '1')
答案 5 :(得分:1)
你需要问
* str =“123”; if(str [0] =='1')printf(“Hello \ n”);
查看1左右的单引号?您需要比较一个字符,并且您正在比较一个整数。
答案 6 :(得分:1)
尝试使用if(str[0] == '1')
而不是与1
进行比较,这意味着什么在C中是真的:)
答案 7 :(得分:1)
使用此==>
if(str[0] == '1')
printf("Hello \n");
答案 8 :(得分:1)
尝试这个......
if(str[0] == '1')
printf("Hello \n");