C++中的“CH+”还是“CH+ 1”? 在阅读C++入门第五版的同时,我看到了这段代码: cin.get(ch); ++ch; cout << ch;
因此,这将导致在ch之后显示以下字符。但是,如果我这样做:C++中的“CH+”还是“CH+ 1”? 在阅读C++入门第五版的同时,我看到了这段代码: cin.get(ch); ++ch; cout << ch;,c++,cout,C++,Cout,因此,这将导致在ch之后显示以下字符。但是,如果我这样做: cin.get(ch); cout << ch+1; 现在,cout会认为ch是一个有趣的类型转换。那么,为什么不能这样做呢? 为什么我给一个字符加1会产生一个数字呢?。以及为什么两者之间存在差异: ch++,和ch+1。请注意-这是对原始问题的回答,该问题已被编辑 现在,cout会认为ch是个有趣的人 打字 不会的。不可能改变C++中变量的类型。 ++ch; 递增ch中的任何值 ch+1 获取ch的值内
cin.get(ch);
cout << ch+1;
现在,cout会认为ch是一个有趣的类型转换。那么,为什么不能这样做呢?
为什么我给一个字符加1会产生一个数字呢?。以及为什么两者之间存在差异:
ch++,和ch+1。请注意-这是对原始问题的回答,该问题已被编辑
现在,cout会认为ch是个有趣的人
打字
不会的。不可能改变C++中变量的类型。
++ch;
递增ch中的任何值
ch+1
获取ch的值内容,向其中添加1并丢弃结果。ch中的任何内容都是不变的 请注意-这是对原始问题的回答,该问题已被编辑
现在,cout会认为ch是个有趣的人
打字
不会的。不可能改变C++中变量的类型。
++ch;
递增ch中的任何值
ch+1
获取ch的值内容,向其中添加1并丢弃结果。ch中的任何内容都是不变的 语句+ch;增加ch,而ch+1;没有。语句++ch;增加ch,而ch+1;不会。发生这种情况的原因是文字1的类型为int。当您添加int和char时,会得到int,但当您增加char时,它仍然是char
int i = 0;
cout << ++i << endl;
cout << i++ << endl;
// both will print out 1.
试试这个:
#include <iostream>
void print_type(char)
{
std::cout << "char\n";
}
void print_type(int)
{
std::cout << "int\n";
}
void print_type(long)
{
std::cout << "long\n";
}
int main()
{
char c = 1;
int i = 1;
long l = 1;
print_type(c); // prints "char"
print_type(i); // prints "int"
print_type(l); // prints "long"
print_type(c+i); // prints "int"
print_type(l+i); // prints "long"
print_type(c+l); // prints "long"
print_type(c++); // prints "char"
return 0;
}
出现这种情况的原因是文字1的类型为int。当您添加int和char时,会得到int,但当您增加char时,它仍然是char
int i = 0;
cout << ++i << endl;
cout << i++ << endl;
// both will print out 1.
试试这个:
#include <iostream>
void print_type(char)
{
std::cout << "char\n";
}
void print_type(int)
{
std::cout << "int\n";
}
void print_type(long)
{
std::cout << "long\n";
}
int main()
{
char c = 1;
int i = 1;
long l = 1;
print_type(c); // prints "char"
print_type(i); // prints "int"
print_type(l); // prints "long"
print_type(c+i); // prints "int"
print_type(l+i); // prints "long"
print_type(c+l); // prints "long"
print_type(c++); // prints "char"
return 0;
}
另外,请记住,“++ch”将在实际运行它所在的语句之前执行增量,因此它仍然是一个字符
int i = 0;
cout << ++i << endl;
cout << i++ << endl;
// both will print out 1.
另外,请记住,“++ch”将在实际运行它所在的语句之前执行增量,因此它仍然是一个字符
int i = 0;
cout << ++i << endl;
cout << i++ << endl;
// both will print out 1.
到底是什么给了我这个想法?:D-1,因为你没有回答为什么c+1给出int的问题?这有一个真正的答案。见@itsadok@Vincent发问者在我回答后改变了问题-参见编辑历史。到底是什么给了我这个想法?:D-1,因为你没有回答问题,这就是为什么c+1给出int?这有一个真正的答案。见@itsadok@Vincent提问者在我回答后改变了问题-查看编辑历史记录。你可能想要ch=ch+1我想他是指感谢itsadok,这就是我的意思。你可能想要ch=ch+1我想他是指感谢itsadok,这就是我的意思。打印印刷品int@Avram:是的,二进制算术运算符对小于整数的数进行运算。这在规范中还很早。print_typec+c;//印刷品int@Avram:是的,二进制算术运算符在小于整数的情况下从不进行运算。这在规范中是相当早的。