1和 '\1' 相等吗?

来源:百度知道 编辑:UC知道 时间:2024/05/22 10:53:03
代码如下:
#include <iostream>
using namespace std;
int main()
{
int i=1;
switch(i)
{
case '\1': cout<<1<<endl; break;
}
return 0;
}
结果打印了1;
这说明1和 '\1' 相等;
为什么呢?
请高手指点!
多谢!
natest : 您好!您的回答给了我启发。
bring5492 : 您好。C语言中可以使用\和数字的组
合代表字符的,只不过被称作转义字
符;
匿名 : 您好!您的回答也给了我启发。
2008MOMO2008:您好!谢谢您的回答。
现在我明白了:
'\1'就是代表ASCII码为1的字符;当然在case语句中被转化成了int型,当然和int的1也是相等的;
再比如:'\101'就是代表ASCII码为65的字符,它的值等于int型的65;

char转换为int时,会对最高符号位1进行扩展.单凭这个程序是不能说明
'\1'与1是相等的,只能说是编译器在处理的过程中对'\1'的处理结果和1的处理结果是一样的,故而case在进行类型判断时将其视为八进制.从0到7这个范围与'\0'和'\7'这个范围处理结果是相等的.但不说明'\1'就是1.

\1表示8进制的1,而1是10进制的,按你的设想一直到\8和8都是相等的,可是超过\8,就不一样了。

这个我记得不大清楚了
但是我有一点记得很清楚如果我们要打印\的话
我们是必须咱程序里面写'\\'这样才能正常打印的
这个可以说明\只是一个C/C++规定的一个特殊的符号
具体是什么我也说不清楚
如果有什么更好的答案告诉我一声

1和 '\1' 不相等

1可以表示数字,而'\1'是转义字符