C++中的“CH+”还是“CH+ 1”? 在阅读C++入门第五版的同时,我看到了这段代码: cin.get(ch); ++ch; cout << 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的值内

因此,这将导致在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:是的,二进制算术运算符在小于整数的情况下从不进行运算。这在规范中是相当早的。