c++ - C++ 中的 "Ch++"或 "ch+1"?

标签 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 添加到一个 char 它会产生一个数字?。为什么两者之间存在差异: ch++ 和 ch + 1。

最佳答案

发生这种情况的原因是文字 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;
}

关于c++ - C++ 中的 "Ch++"或 "ch+1"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1218648/

相关文章:

c++ - 三元表达式的类型

c++ - 为什么 cout 命令不打印消息?

c++ - 如何将名称读入指针数组并输出?

c++ - 在 C++ 中更改基类值

c++ - 在 OpenCV 中将两张纸片合并成一张图像

c++ - 弄清楚多态类型的 C++ 指针是如何工作的?

c++ - 为什么我的循环没有按我的预期工作?

c++ - 我如何处理迭代的最后一个元素

c++ - 如何使用ASSIMP的ReadFile函数加载多个模型

c++ - 当分配返回 0 时,带有空异常规范调用构造函数的 operator new