【发布时间】:2013-05-19 18:43:36
【问题描述】:
因为我们可以打印 ASCII 码并在 C 中递增 --> 例如:
{
char ch='A';
ch++;
printf("%d",ch);
}
这将在控制台上输出“66”。
如何在 C++ 中做到这一点??
【问题讨论】:
因为我们可以打印 ASCII 码并在 C 中递增 --> 例如:
{
char ch='A';
ch++;
printf("%d",ch);
}
这将在控制台上输出“66”。
如何在 C++ 中做到这一点??
【问题讨论】:
是的,只需在输出之前将其转换为 int,这样它就不会被解释为字符:
char ch = 'A';
ch++;
std::cout << static_cast<int>(ch);
但是请注意,这并不能保证输出与字符 'B' 对应的值。如果您的执行字符集是 ASCII 或其他一些健全的字符集,那么它将是,但标准不能保证您的执行字符集(除了数字字符,0 到 9,具有连续值)。
【讨论】:
printf 将像在 C++ 中一样工作。但是如果你想使用cout,你只需要转换:
char ch = 'A';
ch++;
std::cout << static_cast<int>(ch);
【讨论】:
无需演员表:
{
char ch='A';
ch++;
std::cout << ch << ": " << +ch << '\n';
}
【讨论】:
+ 会导致隐式转换为 int,对吧?这比显式演员表更好吗?
在 C++ 中可以完全相同的方式完成:
{
char ch='A';
ch++;
printf("%d",ch);
}
【讨论】:
接受 C 和 C++ 都不坚持 编码 是 ASCII 的事实(尽管它在台式计算机上无处不在),您提供的代码是有效的 C++。
在许多(尽管不是全部)方面,C++ 是 C 的超集。
【讨论】: