问题描述
我想根据mode
值打印变量数量。这是示例:
char format[64] = {}
int mode_1,mode_2,mode_3;
int a,b,c,d,e,f;
...
// Get mode value here ....
...
// Build the format first
sprintf(format,"%s-%s-%s\n",mode_1 == 0 ? "a=%d,b=%d" : "a=%d",mode_2 == 0 ? "c=%d,d=%d" : "c=%d",mode_3 == 0 ? "e=%d,f=%d" : "e=%d");
// Print value here
printf(format,mode_1 == 0 ? (a,b) : a,mode_2 == 0 ? (c,d) : c,mode_3 == 0 ? (e,f) : f);
当我尝试一个简单的示例时,在模式值为零时打印的值似乎不正确。我在这里做什么错了?
解决方法
此表达式
(a,b)
是带有逗号运算符的表达式。表达式的结果是最后一个操作数的值。
这就是电话
printf(format,mode == 0 ? (a,b): a);
实际上等同于通话
printf(format,mode == 0 ? b: a);
相反,您可以写
mode == 0 ? printf(format,a,b ) : printf( format,a );
如果printf的调用形式取决于整数变量mode
,则可以使用例如switch语句或if-else语句。