Tag: 关联性

C中运算符的优先级和相关性

请查看以下代码段: int a = 10, b; b = (a) + (++a); //2 printf(“b = %d\n”, b); 输出: b = 22 在声明2中,有4个不同的运算符。 其中()具有最高优先级。 由于()运算符的关联性从左到右为什么b = 22而不是21 ? $ gcc –version gcc (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3

三元运算符和赋值运算符

in C / C ++三元运算符实际上是否具有与赋值运算符相同的优先级? Luchian Grigore的回答说案件就像 a ? b : c = d 将永远推断为 a ? b : ( c = d ) 因为=和?:从右到左关联 在c ++中 k = 21 > 3 ? j = 12 : j = 10; 和 k = 1 > 3 ? j = 12 : j = 10; 两者都很好。 […]

谁定义了C运算符优先级和关联性?

介绍 在C / C ++的每本教科书中,您都可以找到运算符优先级和关联表,如下所示: http://en.cppreference.com/w/cpp/language/operator_precedence StackOverflow上的一个问题是这样的问题: 以下函数的执行顺序如下: f1() * f2() + f3(); f1() + f2() * f3(); 参考上面的图表,我自信地回答说函数具有从左到右的关联性,因此在前面的语句中,在这两种情况下都会像这样评估: f1() – > f2() – > f3() 评估函数后,您完成评估,如下所示: (a1 * a2)+ a3 a1 +(a2 * a3) 令我惊讶的是,很多人告诉我,我错了。 决心certificate他们错了,我决定转向ANSI C11标准。 我再一次惊讶地发现在运算符优先级和关联性方面提到的很少。 问题 如果我认为函数总是从左到右进行评估是错误的,那么表中涉及函数优先级和关联性的真正含义是什么? 谁定义了运算符优先级和关联性,如果它不是ANSI? 如果是ANSI的定义,为什么很少提到运算符优先级和关联性? 运算符优先级和关联性是从ANSI C标准推断还是在数学中定义?