c - 以下代码如何将输出作为 -99?

标签 c

下面给出的是 str 初始化为“face”的 C 代码片段:

char *str = "face";
printf("%d\n", -2[str]);

最佳答案

首先,我们需要解析有问题的表达式:我们在 -2[str] 中有两个运算符 - 一个下标运算符 [] 和一个一元减号运算符 -。下标运算符有 higher precedence不是一元减号,所以 printf 打印 2[str]* 的否定。

2[str]等同于str[2]的问答很多,我就不重复解释了;你可以阅读它in this Q&A .

最后,str[2] 的值为'c',表示您系统上的99 代码。对该值应用否定,所以这就是 -99 的打印方式。

* 请注意,- 不是整数常量的一部分,因为 in C integer constants do not include sign .

关于c - 以下代码如何将输出作为 -99?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49967237/

相关文章:

c - 原子 if(A && B)?

c - Omap 5912 的 IDE 和开发工具

从另一个 c 文件调用 Yacc 文件中的函数

c - read() 没有读取完整的 http 响应

c - 需要对 MISRA 规则 13.6 进行解释

c - 打印出一个 char[]

c - 提高这段代码可读性的建议

c - udp套接字到底接收什么?

c - 数组的最后一个元素不同的值

C - 数组,从文件读取到结构数组(calloc realloc free...)