在阅读 “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;增量chch + 1;没有。

此外,请记住“+ +我”将做增量实际运行它是在声明之前,所以这就是为什么它仍然是一个烧焦。

int i = 0;
cout << ++i << endl;
cout << i++ << endl;
// both will print out 1.
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top