相关疑难解决方法(0)

12
推荐指数
5
解决办法
5456
查看次数

算术C++运算符

我在技术访谈中刚问了一个问题,我有点困惑.

问题如下:

如果

int i = -1, int j = -1, and int k = -1, 
Run Code Online (Sandbox Code Playgroud)

我们运行以下行:

++i && ++j && ++k
Run Code Online (Sandbox Code Playgroud)

i,j和k的新值是什么?我感到困惑的原因是,因为我们没有将这个表达式赋值给任何东西,所以看起来并不像运算符应该有任何区别(只有增量运算符应该).然而,运行一个简单的测试程序很快证明我错了.有人可以向我解释这个,因为我之前从未见过这个练习.

c++ arithmetic-expressions

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

此函数输出的说明

我正在做复习问题,问我"以下内容的输出是什么",我在理解这个功能方面遇到了一些麻烦:

int a = 1, b = 1, c = -1;
c = --a && b++;
printf("%d %d %d", a, b, c);
Run Code Online (Sandbox Code Playgroud)

输出是010.我的问题是关于第2行,c = --a && b++.如何处理此行,以及它如何工作/更改值?如果是的话c = --a || b++?从我的理解,我认为输出将是020.

c logical-operators integer-arithmetic output

5
推荐指数
2
解决办法
154
查看次数

c ++,用多个`&&`来计算表达式,没有低优先级的运算符

如果表达式计算多个&&运算符,并且不计算任何较低优先级的运算符(例如||,?:),那么只要其中一个&&s返回0,表达式是否会计算为0,还是会完成对剩余&&s的计算?

例如,

q=0; w=1; e=1; r=1;
if(q && w && r && e) {}
Run Code Online (Sandbox Code Playgroud)

if()一旦q && w评估为0,这将评估为false (因为&&无论右手操作符如何,其余的必须全部评估为0)?

c++ evaluation expression expression-evaluation operator-precedence

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

为什么代码中的输出不是这个?

#include <stdio.h>

int main(void) {
int i = -3, j = 2, k = 0, m;
m = ++i && ++j || ++k;
printf("%d %d %d %d\n",i,j,k,m);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我试图了解C中运算符的关联性和优先级.这里,输出结果是-2 3 0 1,但我认为输出应该是-2 3 1 1因为k也是预先递增的.为什么那不是答案?谢谢!

c operator-precedence

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

如何编译if语句编译

main()    
{

   int k = 5;

    if(++k <5 && k++/5 || ++k<=8);  // how to compiler compile this statement 
  print f("%d",k);
}
Run Code Online (Sandbox Code Playgroud)

//这里的答案是7但是为什么?

c c++ compiler-construction

-5
推荐指数
1
解决办法
205
查看次数