【发布时间】:2014-10-25 06:31:56
【问题描述】:
谁能向我解释或告诉我如何解决我使用条件运算符遇到的这个编码问题
它似乎总是跳过条件运算符,即使我将服务器更改为 0 或 1,也只打印第二个选项
它总是打印出第二个选项 SetB 然后是 SetA
为什么这不起作用?这是某种语义错误吗?还是逻辑错误?
#include <stdio.h>
#include <limits.h>
int main(int argc, char *argv[]){
int ch = -191;
int x = UINT_MAX;
int setA[5]={-1,-1,-1,-1,-1};
int setB[5]={-2,-2,-2,-2,-2};
int server = 1;
int i=2;
printf("%d %d\n",server==1?setA[i],setB[i]:setB[i],setA[i]);
printf("%d %d\n",server==0?setA[i],setB[i]:setB[i],setA[i]);
// printf("%u\n%u\n",ch,x);
}
【问题讨论】:
-
int x = UINT_MAX是一个错误。int最多只能保存INT_MAX的值。 -
server==n?setA[i],setB[i]:setB[i]表示server==n?setB[i]:setB[i] -
你可以简单地使用正确的语法来做你想做的事。 IE。而不是: printf("%d %d\n",server==1?setA[i],setB[i]:setB[i],setA[i]);你可以这样做: printf("%d %d\n",(server==1)?(setA[i],setB[i]):(setB[i],setA[i]));
标签: c