相关疑难解决方法(0)

!(变量)和(!变量)之间的区别

在C或C++中,使用!(variable)(!variable)在a之间是否有确定的区别if-statement,例如:

if (!(variable)) { .. // do something }

要么

if (!variable && !(variable2)) { .. // do something }

这样一个版本提供的结果与另一个版本不同?

c c++ if-statement

3
推荐指数
2
解决办法
288
查看次数

奇怪的宏定义问题

我想在编译时根据另一个宏的值定义一个宏.但是,此代码未按预期执行:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIXTEEN 16
#define TWO (SIXTEEN % 8 == 0)? (SIXTEEN / 8) : ((SIXTEEN / 8) + 1)

int main();

int main() {
    printf("max = %d\n", TWO);
    int i;
    for (i = 0; i < TWO; i++) {
        printf("%d\n", i);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这打印:

max = 2
0
1
2
...
Run Code Online (Sandbox Code Playgroud)

并继续直到终止,当它应该打印简单:

max = 2
0
1
Run Code Online (Sandbox Code Playgroud)

并退出.

如果我这样做,它的工作原理:

#define TWO 2
Run Code Online (Sandbox Code Playgroud)

我认为这是宏的定义的一个问题...但是,如果我使用原始的#define执行以下操作,它似乎工作:

...
int count = TWO;
for (i = …
Run Code Online (Sandbox Code Playgroud)

c macros c-preprocessor

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

为什么这个62的结果?

唯一让我想到的是,MULT((3 + 2)(5*4))= 100不是62?有人可以解释一下吗?

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#define ADD(x1, y1) x1 + y1
#define MULT(x1,y1) x1 * y1


int _tmain(int argc, _TCHAR* argv[])
{
    int a,b,c,d,e,f,g;
    a=2;
    b=3;
    c=4;
    d=5;
    e= MULT(ADD(a,b),MULT(c,d));
    printf("the value of e is: %d\n", e);
    system("PAUSE");
}
Run Code Online (Sandbox Code Playgroud)

c c++ operators

-1
推荐指数
2
解决办法
258
查看次数

标签 统计

c ×3

c++ ×2

c-preprocessor ×1

if-statement ×1

macros ×1

operators ×1