【问题标题】:why if we assign a variable 0 it does not work properly in if else statement为什么如果我们分配一个变量 0 它在 if else 语句中不能正常工作
【发布时间】:2021-03-29 23:47:18
【问题描述】:

当我分配除 0 以外的 rat 时,如果我分配 rat=0,它会正常工作,如果 rat 不是 0,我的程序会正常工作并给我正确的素数

#include<stdio.h>
int main()
{
    printf("\nenter a number");
    int num,rat;
    scanf("%d",&num);
    for(int i=2;i<num;i++)
    {
        if(num%i==0)
        {
            rat=0;
            break;
        }
        
    }
    if(rat==0)
    {
    printf("\nit is not a prime number");
    }
    else
    {
        printf("\nit is a prime number");
    }
  
}

【问题讨论】:

  • 你不会在任何地方给rat 一个初始值。也许它从零开始?未定义的行为。
  • int num, rat = any-non-zero-value;
  • 为什么要初始化为非零
  • 如果你没有达到rat=0;的分配,你怎么知道它是零还是非零?
  • 如果你要问这个,你为什么把rat=0;这行放在里面?这条线的目的是什么?它是如何工作的?

标签: c if-statement variable-assignment


【解决方案1】:

那是因为rat没有初始化,所以它的值是未定义的。您可以将其初始化为非零值:这样,默认情况下该数字被视为素数(因为它属于else 语句)并在检查循环后标记为非素数(如果是这种情况)。

【讨论】:

    猜你喜欢
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    相关资源
    最近更新 更多