我如何让我的代码说“你不能分为0”

问题描述:

所以,我正在练习函数循环等,我坚持这样做。我很初学编程,但我搜索了很多,这让我学习真正快点。 (通过我试过我的代码,以检查是否从用户输入的是数字还是没有办法的办法。)我如何让我的代码说“你不能分为0”

printf("Define numbers.\n"); 
     printf("Select: "); 
     scanf("%d", &x); 
     printf("Select: "); 
     scanf("%d", &y); 
     if (y = temp) 
     { 
      printf("Division of something by 0 is undefined.\n"); 
     } 
     else 
     { 
      printf("Division of %d and %d is %d\n", x, y, div(x, y)); 
     } 

所以我宣布临时= 0我认为它会做的伎俩,但它没有。

+6

你确定你不是指'if(y == temp)'? ('=='而不是'=') –

+0

'='是赋值,而不是'=='这是比较。你说'temp = 0',所以你真正在做的是'if(y = temp)' - >'if(y = 0)' - >'if(0 = 0)' - >'if (0)'这是错误的,所以'else'分支执行。虽然魔术数字通常是皱眉,但这种情况是个例外。如果这是你唯一使用的temp,那么在做'int temp = 0;'和'if(y == temp)'时不会获得任何结果。也可能只是做'if(y == 0)'。 – yano

当你做y = temp你给Ÿ温度的值,在这种情况下,0在C其转化为false逻辑值

你想要做什么是

if (y == temp)

==运算符测试两个变量之间的相等性

+2

0转换为'false',而不是'true',这就是为什么当temp为0时它不会进入if语句。 –

+0

已更正,谢谢 –

+0

'temp'在此不必要,amd可能是OP的一部分解决问题。值得注意的是,如果习惯性地使用文字零并将其置于左侧,编译器可以捕获错误:即if(0 == y)',因为if(y = 0)'将编译但很少正确,而'if(0 = y)'将无法编译。 – Clifford