printf语句出错?(C)*最新情况*

printf语句出错?(C)*最新情况*,c,printf,if-statement,C,Printf,If Statement,出于澄清目的,我需要程序打印a和b输入的数字,而不是实际的字母a和b。 好的,根据亚尔的建议,这是修订后的计划: int main (int argc, char *argv[]) { int a; /*first number input*/ int b; /*second number input*/ a = atoi(argv[1]); /*assign to a*/ b = atoi(argv[2]); /*assign to b*/

出于澄清目的,我需要程序打印a和b输入的数字,而不是实际的字母a和b。
好的,根据亚尔的建议,这是修订后的计划:

int main (int argc, char *argv[])  
{
   int a; /*first number input*/  
   int b; /*second number input*/  

   a = atoi(argv[1]); /*assign to a*/  
   b = atoi(argv[2]); /*assign to b*/  

   if (a < b)  
      printf("%s\n", a < b); /* a is less than b*/  
      else {  
         printf("%s\n", a >= b); /* a is greater than or equal to b*/  
      }  

   if (a == b)  
      printf("%s\n", a == b);  /* a is equal to b*/  
      else {  
         printf("%s\n", a != b); /* a is not equal to b*/  
      }  

   return 0;  
} /* end function main*/  
intmain(intargc,char*argv[])
{
int a;/*第一个数字输入*/
int b;/*第二个数字输入*/
a=atoi(argv[1]);/*分配给a*/
b=atoi(argv[2]);/*分配给b*/
if(a=b);/*a大于或等于b*/
}  
如果(a==b)
printf(“%s\n”,a==b);/*a等于b*/
否则{
printf(“%s\n”,a!=b);/*a不等于b*/
}  
返回0;
}/*结束函数main*/
哈哈,现在当我运行程序时,我被告知

8 [main] a 2336 _cygtls::handle_exceptions: Error while dumping state Segmentation fault 8[main]a 2336_cygtls::handle_异常:转储状态时出错 分段故障 这到底是什么意思?(如果你现在还没有注意到的话,我对这些东西很失望,哈哈)

您要求
printf()
打印布尔表达式的值(对于true和false,它们总是分别解析为1或0)

您可能希望您的代码看起来更像:

if (a < b)
     printf("%s\n", "a < b"); /* a is less than b*/
else {
     printf("%s\n", "a >= b"); /* a is greater than or equal to b*/
}
if(a=b”);/*a大于或等于b*/
}
将结果显示为字符串。

您要求
printf()
打印布尔表达式的值(对于true和false,它们总是分别解析为1或0)

您可能希望您的代码看起来更像:

if (a < b)
     printf("%s\n", "a < b"); /* a is less than b*/
else {
     printf("%s\n", "a >= b"); /* a is greater than or equal to b*/
}
if(a=b”);/*a大于或等于b*/
}
以字符串形式显示结果。

此行:

if (a = b)
难道不是吗

if (a == b) 
这里也一样:

printf("%d\n", a = b);  /* a is equal to b*/
应该是

printf("%d\n", a == b);  /* a is equal to b*/
这一行:

if (a = b)
难道不是吗

if (a == b) 
这里也一样:

printf("%d\n", a = b);  /* a is equal to b*/
应该是

printf("%d\n", a == b);  /* a is equal to b*/

您的问题是,您试图替换逻辑表达式而不是整数。以上所有(a>b)。。。计算为真或假(a=b将b的值指定给a除外)。如果要返回较大的值,应执行以下操作:


    printf("%d\n", a > b ? a : b)

    if(a > b)
        printf("a > b\n");
    else
        printf("b >= a\n");
这表示如果a大于b,则打印a,否则打印b

编辑:我想你真正想要的是打印出单词“a>b”等等。在这种情况下,把它们放在printf中。在printf中放置%d时,它会将指定的整数值加入字符串中的该点

我相信你想要的是:


    printf("%d\n", a > b ? a : b)

    if(a > b)
        printf("a > b\n");
    else
        printf("b >= a\n");

正确吗?

您的问题是,您试图用逻辑表达式代替整数。以上所有(a>b)。。。计算为真或假(a=b将b的值指定给a除外)。如果要返回较大的值,应执行以下操作:


    printf("%d\n", a > b ? a : b)

    if(a > b)
        printf("a > b\n");
    else
        printf("b >= a\n");
printf("%s\n", a == b);
这表示如果a大于b,则打印a,否则打印b

编辑:我想你真正想要的是打印出单词“a>b”等等。在这种情况下,把它们放在printf中。在printf中放置%d时,它会将指定的整数值加入字符串中的该点

我相信你想要的是:


    printf("%d\n", a > b ? a : b)

    if(a > b)
        printf("a > b\n");
    else
        printf("b >= a\n");
对吗

printf("%s\n", a == b);
“%s”打印一个字符串。a==b不是字符串,它是一个布尔表达式,结果是1(真)或0(假)

因此,printf()尝试打印字符,直到找到一个空字节,从布尔表达式的位置开始。。。德塞斯特

“%s”打印一个字符串。a==b不是字符串,它是一个布尔表达式,结果是1(真)或0(假)


因此,printf()尝试打印字符,直到找到一个空字节,从布尔表达式的位置开始。。。DeMaster。

根据您的编辑,我认为您正在寻找以下内容:

#include <stdio.h>

int main (int argc, char *argv[]) {
    int a; /*first number input*/
    int b; /*second number input*/

    a = atoi(argv[1]); /*assign to a*/
    b = atoi(argv[2]); /*assign to b*/

    if (a < b)
        printf("%d < %d\n", a, b); /* a is less than b*/
    else
        printf("%d >= %d\n", a, b); /* a is greater than or equal to b*/

    if (a == b)
        printf("%d == %d\n", a, b);  /* a is equal to b*/
    else
        printf("%d != %d\n", a, b); /* a is not equal to b*/

    return 0;
}
#包括
int main(int argc,char*argv[]){
int a;/*第一个数字输入*/
int b;/*第二个数字输入*/
a=atoi(argv[1]);/*分配给*/
b=atoi(argv[2]);/*分配给b*/
if(a=%d\n”,a,b);/*a大于或等于b*/
如果(a==b)
printf(“%d==%d\n”,a,b);/*a等于b*/
其他的
printf(“%d!=%d\n”,a,b);/*a不等于b*/
返回0;
}
此代码:

wfarr@turing:~$ ./foo 1 2
1 < 2
1 != 2
wfarr@turing:~$/foo 1 2
1 < 2
1 != 2.

根据您的编辑,我认为您正在寻找以下内容:

#include <stdio.h>

int main (int argc, char *argv[]) {
    int a; /*first number input*/
    int b; /*second number input*/

    a = atoi(argv[1]); /*assign to a*/
    b = atoi(argv[2]); /*assign to b*/

    if (a < b)
        printf("%d < %d\n", a, b); /* a is less than b*/
    else
        printf("%d >= %d\n", a, b); /* a is greater than or equal to b*/

    if (a == b)
        printf("%d == %d\n", a, b);  /* a is equal to b*/
    else
        printf("%d != %d\n", a, b); /* a is not equal to b*/

    return 0;
}
#包括
int main(int argc,char*argv[]){
int a;/*第一个数字输入*/
int b;/*第二个数字输入*/
a=atoi(argv[1]);/*分配给*/
b=atoi(argv[2]);/*分配给b*/
if(a=%d\n”,a,b);/*a大于或等于b*/
如果(a==b)
printf(“%d==%d\n”,a,b);/*a等于b*/
其他的
printf(“%d!=%d\n”,a,b);/*a不等于b*/
返回0;
}
此代码:

wfarr@turing:~$ ./foo 1 2
1 < 2
1 != 2
wfarr@turing:~$/foo 1 2
1 < 2
1 != 2.

我假设你想要这样的东西

输入:

a=5,b=7

输出:

5<7

5!=七,

如果是这样,您需要打印整数a和b,以及介于两者之间的字符串以显示关系

if( a < b ) {
    printf( "%d < %d\n", a, b );
}
else {
    printf( "%d >= %d\n", a, b );
}

// follow similar pattern for the next if/else block..
if(a=%d\n”,a,b);
}
//对于下一个if/else块,请遵循类似的模式。。

我假设你想要这样的东西

输入:

a=5,b=7

输出:

5<7

5!=七,

如果是这样,您需要打印整数a和b,以及介于两者之间的字符串以显示关系

if( a < b ) {
    printf( "%d < %d\n", a, b );
}
else {
    printf( "%d >= %d\n", a, b );
}

// follow similar pattern for the next if/else block..
if(a=%d\n”,a,b);
}
//福勒