C 三元运算符

标签 c ternary-operator

在学习 C 语言时,我遇到了一些完全让我困惑的事情。

表达式为:

exp(V*log(i))?i%2?s:s--:s++;

如果三元运算符是问题?正:负;我认为它是这样的:

if(pow(i,V)==1&&(i%2)==0)
    s--;
 else
    s++;

但是,s没有进入问题,我应该问第一个表达式是什么意思吗?

该程序运行良好,但我不明白为什么。

原程序是:

main(){
    #define V 1

    int a, s=0, i;
    for(i=1000;i>=0;i--)
        exp(V*log(i))?i%2?s:s--:s++;
    exp(V*log(i))?printf("%d\t%d\t",-s,i):printf("%d\t%d\t", s,-i);
    getch();
}

最佳答案

如果 exp(Vlog(i)) 为 true 则测试是否为奇数 i%2==1 如果为偶数则返回 s-- if exp(Vlog(i )) 为 false 返回 s++ 如果你这样写就更容易看到:

exp(V*log(i))?(i%2?s:s--):s++;

关于C 三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30904865/

相关文章:

c# - ? : ? ?运算符代替 IF|ELSE

c++ - 使用三元运算符从函数返回的统一初始化

指定的初始值设定项可以合法地引用它在 C99 中初始化的变量吗?

c - 在 C 中访问结构元素

c - 我有一些关于如何将生成的数据保存在新字符串中的 for 循环中的问题

c - 从主机程序动态配置 FPGA

java - Actionscript 中 "If greater than, then equal to"的简写?

c - C与LabVIEW的事件结构有何相似之处?

c - 应该吗?运算符被更频繁地使用?

javascript - Vue/Javascript - 编写这个三元组的最佳方式