以下程序的输出是什么?

-5 c printf

#include <stdio.h>

main()
{
   printf(" %d\n",'-'-'-'+'/'/'/');
}
Run Code Online (Sandbox Code Playgroud)

它的输出为1.

我也试过不同的组合,但不能确定输出?

Joh*_*ode 5

字符常量的'-'ASCII值为45,而'/'ASCII值为47.因此,假设您在使用ASCII或UTF-8字符编码的系统上运行,则表达式求值为

'-' - '-' + '/' / '/'  == 45 - 45 + 47 / 47 == 0 + 1 == 1
Run Code Online (Sandbox Code Playgroud)

因此输出"1".

编辑

KerrekSB正确地指出底层字符集不必是ASCII; 我只是用它来指出字符常量具有相应的数值.无论编码(ASCII,EBCDIC,UTF-8等),'-' - '-'总是评估为0并'/' / '/'始终评估为1.

  • 你是如何得出OP的执行字符集是ASCII的? (3认同)