如何在C中的参数中包含一个正式的if语句?
例如,我有一些乘法表的代码,但为了使它看起来更整洁,我在打印中有这个%s,它根据是两位数还是一位数来分隔每个数字如何在C中的参数中包含一个正式的if语句?,c,C,例如,我有一些乘法表的代码,但为了使它看起来更整洁,我在打印中有这个%s,它根据是两位数还是一位数来分隔每个数字 printf(" %d %s", columns * multiplier, (columns * multiplier < 10) ? " " : " "); printf(“%d%s”),列*乘数, (列*乘数
printf(" %d %s", columns * multiplier,
(columns * multiplier < 10) ? " " : " ");
printf(“%d%s”),列*乘数,
(列*乘数<10)?“”:“”);
我的if语句是速记版本(据我所知,它只能有2个条件?),这是我知道如何在printf字符串中包含%s的if语句的唯一方法,我将如何生成可以有多个条件的if语句?比如三位数或四位数 您可以执行以下操作:
x=a?b:(c?d:e)
这等于:
if(a){
return b;
}else if(c){
return d;
}else{
return e;
}
if(a && b){//both a and b are true
return c
}else{
return d;
}
或
这等于:
if(a){
return b;
}else if(c){
return d;
}else{
return e;
}
if(a && b){//both a and b are true
return c
}else{
return d;
}
实际上,您可能会将最小字段宽度选项与 左对齐标志(-),例如,
printf(“%-5d”,1)代码>,但如果您想利用此机会
玩三元,注意:
在英语中,这意味着您可以嵌套它:
#define PR(X) printf(" %d %s", X, \
(X)<10 ? " " : \
(X)<100 ? " " : \
(X)<1000 ? " " : "" \
)
#include <stdio.h>
int main(){
printf(" %-5d", 1);
printf(" %-5d", 22);
printf(" %-5d", 333);
printf(" %-5d\n", 4444);
//PRINTS:
//1 22 333 4444
//The same thing with the ternary:
PR(1);
PR(22);
PR(333);
PR(4444);
puts("");
}
#定义PR(X)printf(“%d%s”,X\
(十) “速记版本”称为三元运算符。在此printf语句之前创建一个新的if语句,并将所需的正确输出放入变量中。然后只需打印该变量。cond1?cond1Val:cond2?cond2Val:cond3?cond3Val:“范围错误。”
关注干净、可读、可维护的代码,不要这样做。在调用printf之前,请在函数中适当地格式化字符串,或者制作一个helper函数来格式化您调用的字符串,以提供printf的值。