如何在C中的参数中包含一个正式的if语句?

如何在C中的参数中包含一个正式的if语句?,c,C,例如,我有一些乘法表的代码,但为了使它看起来更整洁,我在打印中有这个%s,它根据是两位数还是一位数来分隔每个数字 printf(" %d %s", columns * multiplier, (columns * multiplier < 10) ? " " : " "); printf(“%d%s”),列*乘数, (列*乘数

例如,我有一些乘法表的代码,但为了使它看起来更整洁,我在打印中有这个%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的值。