题
在阅读 “C ++的Primer Plus第五版”,我看到这一段代码:
cin.get(ch);
++ch;
cout << ch;
所以,这将导致显示ch后面后面的字符。但是,如果我做了这种方式:
cin.get(ch);
cout << ch+1;
现在,COUT会认为CH是一个int(尝试类型转换)。那么,为什么COUT这样做? 为什么如果我加入1至焦炭会产生一些?为什么有之间的差异: CH ++,和ch + 1。
解决方案
发生这种情况的原因是字面的类型1
为int。当您添加一个int和一个char你会得到一个int,但是当你增加一个字符,它仍然是一个烧焦。
尝试这种情况:
#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;
}
其他提示
请注意 - 这是answe原来的问题,这已经被编辑强>
现在,COUT会觉得CH是一个int(试 类型转换)。
没有它不会。这是不能够改变一个变量的类型在C ++中。
++ch;
增量无论是在CH
CH + 1;
取ch的值(内容),加1,并丢弃结果。无论是CH不变。
声明++ch;
增量ch
而ch + 1;
没有。
此外,请记住“+ +我”将做增量实际运行它是在声明之前,所以这就是为什么它仍然是一个烧焦。
int i = 0;
cout << ++i << endl;
cout << i++ << endl;
// both will print out 1.
不隶属于 StackOverflow