首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PSET 1学分CS50

PSET 1学分CS50
EN

Stack Overflow用户
提问于 2022-09-18 16:07:15
回答 1查看 56关注 0票数 -1

我正在处理来自CS50的信用卡PSET,我成功地完成了大部分代码,但是当我达到检查卡片是否有效的条件时,当我试图编译它时,它会给我这个错误。在常量操作数中使用逻辑的“AC.26”,在按位操作时使用“AC.26”。这是破坏我代码的部分。

代码语言:javascript
复制
   if (counter > 12 && counter < 17) // check first condition
   {
       if (sum % 10 == 0) // check 2nd condition
       {
           if (number != (4 || 34 || 37 || 51 || 52 || 53 || 54 || 55))
           {
               do
               {
                   testnumber4 /= 10;
               }
               while (testnumber4 != (4 || 34 || 37 || 51 || 52 || 53 || 54 || 55));
               if (testnumber4 == 4)
               {
                   printf("VISA\n");
               }
               else if (testnumber4 == (34 || 37))
               {
                   printf("AMEX\n");
               }
               else if (testnumber4 == (51 || 52 || 53 || 54 || 55))
               {
                   printf("MASTERCARD\n");
               }
               else
               {
                   printf("INVALID\n");
               }
           }
           else
           {
               printf("INVALID\n");
           }
       }
       else
       {
           printf("INVALID\n");
       }
   }
   else
   {
       printf("INVALID\n");
   }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-18 16:57:55

你的代码

代码语言:javascript
复制
if (number != (4 || 34 || 37 || 51 || 52 || 53 || 54 || 55))

就像你说的那样,“数字不是4或34…”,

或者更准确地说,“数字不是4,34,.列表中的任何东西”。

即使是口语,这也是不能理解的,但人类通常可以从语境中看出你的意思。

然而,编译器是愚蠢的。所以你必须非常不理解。你需要把它说得非常详细。你必须说“数字不是4,数字不是34,数字不是.”。

在C中,如下所示

代码语言:javascript
复制
if ( (number !=  4)  &&
     (number != 34)  &&
     (number != 37)  &&
     (number != 51)  &&
     (number != 52)  &&
     (number != 53)  &&
     (number != 54)  &&
     (number != 55) 
   )

您所得到的错误解释为编译器尝试时有多困惑,但却无法理解您的逻辑。

它认为“取所有这些数字,逻辑上或它们;嗯,它们都是非零的;所以结果就像‘真或真或真’;嗯,这是没有道理的,也许你想要二进制--或者它们?这至少会给出一个有趣的值。”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73764320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档