错误:类型名称需要说明符或限定符

时间:2018-01-25 14:53:24

标签: cs50

if (i==15)
    {
        (f/(10(^)13)) ==34 || (f/(10(^)13)) ==37;
        printf("AMEX \n");
    }

我在这里找不到什么问题。我得到“类型名称需要说明符或限定符”和“预期表达式”的错误 ==的优先级大于^但是我把^放在括号之间,所以它应该先执行。

1 个答案:

答案 0 :(得分:0)

他们的代码存在几个问题:

  • 无法编写第一个10(^)13,您应该写10^13

  • ^运算符是按位xor。
    因此10^13将被评估为71010b xor 1101b -> 0111b),这不是您想要的。

  • 您忘记了测试中的if(如果您在添加;时未删除if,则f将导致您遇到麻烦。

因此,如果#define CARD_TYPE_POSITION 10000000000000 if (i==15) { if (((f/CARD_TYPE_POSITION) == 34) || ((f/CARD_TYPE_POSITION) == 37)) printf("AMEX \n"); } 是64位整数,则所需的正确语法是:

#define CARD_TYPE_POSITION 10000000000000
if (i==15)
{    
    int card_type = f / CARD_TYPE_POSITION;
    if ((card_type == 34) || (card_type == 37))
        printf("AMEX \n");
}

您还可以计算一次卡片类型:

jcmd PID GC.run