相关疑难解决方法(0)

为什么这些构造使用前后增量未定义的行为?

#include <stdio.h>

int main(void)
{
   int i = 0;
   i = i++ + ++i;
   printf("%d\n", i); // 3

   i = 1;
   i = (i++);
   printf("%d\n", i); // 2 Should be 1, no ?

   volatile int u = 0;
   u = u++ + ++u;
   printf("%d\n", u); // 1

   u = 1;
   u = (u++);
   printf("%d\n", u); // 2 Should also be one, no ?

   register int v = 0;
   v = v++ + ++v;
   printf("%d\n", v); // 3 (Should be the …
Run Code Online (Sandbox Code Playgroud)

c increment operator-precedence undefined-behavior sequence-points

793
推荐指数
13
解决办法
7万
查看次数

通过在c中平方宏SQR而感到困惑

这个问题在模拟面试中被问到了......真的很惊讶地找到了尴尬的答案......

考虑一个宏:

#define SQR(x) (x*x)
Run Code Online (Sandbox Code Playgroud)

例1:

SQR(2) //prints 4
Run Code Online (Sandbox Code Playgroud)

例2:

如果给出SQR(1 + 1),它不会求和(1+1),2而是......

SQR(1+1) //prints 3
Run Code Online (Sandbox Code Playgroud)

尴尬吧?是什么原因?这段代码是如何工作的?

注意:我搜索了SO,但找不到任何相关问题.如果有任何好评请分享!

c c++ macros c-preprocessor

14
推荐指数
3
解决办法
1万
查看次数

以下宏可能给应用程序带来哪些问题?

以下宏可以带来问题吗?

#define sq(x) x*x
Run Code Online (Sandbox Code Playgroud)

如果是,那么如何以及为什么?请帮助.

c c++ macros

1
推荐指数
1
解决办法
685
查看次数