代码不会读取if语句

时间:2016-06-19 10:11:21

标签: c

      #include <stdio.h>
      #include <stdlib.h>

出了什么问题?

   int main()

这是代码

    {
    char planet;
    char earth;
    int  weight;
    float mass;
    int a=9;
    printf("Planet Name \n");
    scanf("%s",&planet);

编译器不会读取它只是跳转到else语句的if语句

    if(planet=earth){

    printf("Enter your weight \n");
    scanf("%d",weight);
    mass=weight/a;
    printf("Your mass is %d",mass);}
    else {
    printf("Aww,snap!!!!!!We couldn't find the data");
    }

    return 0;}

3 个答案:

答案 0 :(得分:0)

当你这样做时

if(planet=earth){

你做的相当于:

char x = planet=earth;
if(x){

而不是

bool x = planet == earth;    如果(X){

错误的部分是根据语言空间

if(x){

可以被编译器接受,如果x不是布尔表达式,它将被转换为布尔值,但是遵循以下标准:

    如果x为零,则为
  • false,否则为true。

所以最后

if(false){ //never met until the char given as input is a valid
    ...
else {
    printf("Aww,snap!!!!!!We couldn't find the data");
}

答案 1 :(得分:0)

planet是一个char,因此它只能容纳一个char,但在scanf中您尝试读取字符串。 使用%c代替%s

scanf("%c",&planet);

变量earth最初包含垃圾,因为您尚未为其分配任何值。 在if声明中,您指定=而不是比较==

当您阅读weight的值时,您没有使用address of运算符&,因此无法读取该值。

mass=weight/a;在这里您应该使用显式类型转换,否则您的结果将在int中,稍后会在分配时升级到float,但到那时您的小数值已经丢失了。

int main()
 {
char planet;
char earth='A'; //at least assign something
int  weight;
float mass;
int a=9;
printf("Planet Name \n");
scanf("%c",&planet);

if(planet==earth){

printf("Enter your weight \n");
scanf("%d",&weight);
mass=(float)weight/a;
printf("Your mass is %d",mass);}
else {
printf("Aww,snap!!!!!!We couldn't find the data");
}

return 0;}

我没有编译,应该工作。

答案 2 :(得分:0)

您的代码的正确版本是:

#include<stdio.h>
int main()
 {
char planet;
char earth='e';//Assign a value to this variable first.
int  weight;
float mass;
int a=9;
printf("Planet Name \n");
scanf("%c",&planet);

if(planet==earth){

printf("Enter your weight \n");
scanf("%d",&weight);
mass=(float)weight/a;
printf("Your mass is %f",mass);}
else {
printf("Aww,snap!!!!!!We couldn't find the data");
}

return 0;}

如果你输入&#39; e&#39;在控制台中,输入重量后,您将获得所需的答案。