首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++中的"Ch++“还是"ch+1”?

C++中的"Ch++“还是"ch+1”?
EN

Stack Overflow用户
提问于 2009-08-02 10:49:42
回答 4查看 1.4K关注 0票数 1

在阅读"C++入门+第五版“时,我看到了这段代码:

代码语言:javascript
复制
    cin.get(ch);
    ++ch;
    cout << ch;

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

代码语言:javascript
复制
    cin.get(ch);
    cout << ch+1;

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-02 11:12:00

发生这种情况的原因是文字1的类型是int。当你将一个int和一个char相加时,你会得到一个int,但是当你增加一个char时,它仍然是一个char。

试试这个:

代码语言:javascript
复制
#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;
}
票数 18
EN

Stack Overflow用户

发布于 2009-08-02 10:51:33

请注意-这是原始问题的答案,该问题后来被编辑过。

现在,cout会认为ch是一个

(尝试类型转换)。

不,它不会。在C++中不可能改变变量的类型。

代码语言:javascript
复制
++ch;

对ch中的任何内容进行递增。

ch + 1;

取ch的值(内容),将其加1,然后丢弃结果。ch中的内容都是不变的。

票数 8
EN

Stack Overflow用户

发布于 2009-08-02 10:55:36

语句++ch;递增ch,而ch + 1;不递增。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1218648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档