【问题标题】:warning: statement with no effect wunused value警告:无效的声明 wunused 值
【发布时间】:2020-12-02 15:16:22
【问题描述】:

如果有人可以帮助我,我将不胜感激。 我是编码初学者,并使用开关控制表达式在 c 中键入了一个程序 为了确定一个整数是奇数还是偶数,我不断在代码块上收到此警告。

警告:第 15 行和第 21 行中没有效果的语句 [-Wunused-value]|。

我已尝试在 Google 上搜索该问题,但每个解决方案都显得含糊不清,就像有人说问题在于为结果赋值一样。 程序如下

1. #include<stdio.h> 
2. #include<stdlib.h> 
3. 
4. int main() 
5. { 
6.     int num; 
7. 
8.     printf("Enter the integer\n"); 
9.     scanf("%d", &num); 
10. 
11. 
12.     switch(num % 2) 
13.     {
14.     case 0: 
15.         num % 2 == 0;
16.         printf("Number is even");   
17.         break; 
18.    
19.     
20.     case 1: 
21.         num % 2 !=0; 
22.         printf("Number is Odd");
23.         break;
24.      }
25.     
26. Return 0;
27. 
28. }
29.

非常感谢您的帮助。

问候。

【问题讨论】:

  • 你认为像num%2 == 0; 这样的声明有什么作用?你为什么把这个语句放在你的程序中?
  • 关于“我尝试过 Google...”:您是从书本中学习还是从什么中学习?一本教 C 的书应该教你需要的概念,并且应该引导你完成它们。在这个级别应该不需要谷歌任何东西。
  • 嗨,埃里克,我正在用一本初学者的书来做这件事,这本书在关于选择结构的章节末尾提出了这个问题,问题是关于要求用户输入一个整数,然后是编译器使用 switch 表达式结构和 mod 除法来编译它。这是一本初学者的书,但问题超出了我的智商水平。

标签: c warnings


【解决方案1】:

这正是你的编译器告诉你的:语句

num%2 !=0; 

和

num%2 == 0;

没有效果,可以去掉。这些是比较,但比较结果没有被使用(即丢弃)。

条件已经在这里了:

switch(num%2) 

结果与case 语句一起使用。

也许没有效果的语句应该是 cmets?然后在它们前面加上//

【讨论】:

  • 我按照您的建议做了并删除了语句 num%2 = 0 和 num%2 != 0。警告现在已经消失。那么,如果我使用说明 num%2 的 switch 表达式会告诉编译器选择哪种情况选项,因为我没有说明 num%2 == 0 或 num%2!=0 的选项。
  • @RaseshRao:正如本书无疑告诉你的那样,当你编写switch (num%2) 时,程序会评估num%2 并使用结果来决定跳转到哪里。如果结果为 0 或 1,标签 case 0: 和 case 1: 标记要跳转到的位置。
  • 谢谢,我知道了。
【解决方案2】:

首先,在您的代码切换返回 1 或 0 时,您只需制作 "case 0:" 和 "case 1:"

二、改Return为return

int main()
{
    int num;

   printf("Enter the integer\n");
   scanf("%d",&num);

   switch(num%2)
   {
      case 0 :
      printf("Number is even");
      break;
      case 1 :
      printf("Number is Odd");
      break;
   }
    return 0;
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多