作者:红太郎的等待_921 | 来源:互联网 | 2022-12-05 14:10
为什么以下代码片段输出3?
// Example program
#include
#include
int main()
{
std::cout <<+ '+' - '-' * '*' / '/' <
GCC输出在这里.
Clang的输出也相同.
1> SergeyA..:
所有的'+'
,'-'
,'*'
和'/'
是char
类型-这意味着它们都是整数类型,并支持算术运算.每个都有数字表示,由编码定义.在当今的大多数情况下,编码是ASCII
.在ASCII编码中,*
42 -
是45,+
是43,/
是47.
考虑到这一点,您的代码相当于
std::cout <<+43 - (45 * 42 / 47) <
这显然是整数运算中的3,当(45 * 42 / 47)
等于40时.