小编abu*_*abu的帖子

通过在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万
查看次数

如何停止递归?

下面的代码是to find the path in a tree that adds up to a given sum......我在这里所做的是将enqueue所有节点的值放入一个数组中path,如果条件满足递归,则将其打印......

void checkSum(NODE* root, int path[], int len, int sum){

     if(root == NULL) return;

     path[len] = root->data;
     len++;

     if(sum - root->data == 0){ 
            sum -= root->data;
            cout<<"\nSum equals..."; 
            printPaths(path, len); 
     }
     else if(sum - root->data > 0){
          sum -= root->data;
          checkSum(root->left, path, len, sum);    
          checkSum(root->right, path, len, sum);
     }else { return; }
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是,有没有其他方法可以在不使用任何数据结构的情况下打印路径(至少一个)???

像这样的东西......

void checkSum_second(NODE* root, int sum){

     if(root …
Run Code Online (Sandbox Code Playgroud)

c++ recursion data-structures

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

标签 统计

c++ ×2

c ×1

c-preprocessor ×1

data-structures ×1

macros ×1

recursion ×1