C ++中的“Ch ++”或“ch + 1”?

时间:2009-08-02 10:49:42

标签: c++ cout

在阅读“C ++ Primer Plus 5th edition”时,我看到了这段代码:

    cin.get(ch);
    ++ch;
    cout << ch;

因此,这将导致在ch之后显示以下字符。但是,如果我这样做的话:

    cin.get(ch);
    cout << ch+1;

现在,cout会认为ch是一个int(尝试类型转换)。那么,为什么cout这样做呢? 为什么如果我在一个字符中加1,它会产生一个数字?为什么以下两者之间存在差异: ch ++和ch + 1。

4 个答案:

答案 0 :(得分:18)

出现这种情况的原因是文字1的类型是int。当你添加一个int和一个char时你得到一个int,但是当你增加一个char时,它仍然是一个char。

试试这个:

#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 :(得分:8)

请注意 - 这是对原始问题的回答,该问题已经过编辑。

  

现在,cout会认为ch是一个int(尝试   类型转换)。

不,不会。无法在C ++中更改变量的类型。

++ch;

增加ch中的任何内容。

ch + 1;

获取ch的值(内容),将其加1并丢弃结果。无论什么在ch中都没有改变。

答案 2 :(得分:1)

声明++ch;增加chch + 1;不增加。{/ p>

答案 3 :(得分:0)

另外,请记住'++ i'将在实际运行它所在的语句之前执行增量,这就是为什么它仍然是char。

int i = 0;
cout << ++i << endl;
cout << i++ << endl;
// both will print out 1.