C变量指定为long long但被识别为int

时间:2017-10-20 18:31:31

标签: c variables cs50 long-long

我正在制定一项程序,检查CS50级别的信用卡号码的有效性(我是合法的,我发誓哈哈),而我目前正在开展工作正确获取每个CC#的前两个数字,以检查它来自哪个公司。我已经评论了每个部分为清晰起见所做的事情,并评论了我的问题出现的地方。

pub fn make_parser<R>(stream: R) -> Box<Parser>
where
    R: io::Read + 'static,
{
    Box::new(ParserImpl::new(stream))
}

1 个答案:

答案 0 :(得分:0)

第一个问题是循环中的+count。这应该是++count。因此,count保持为0和power = -2。你可以避免所有的力量。你已经有了循环,你可以用它来得到前两位数字:

int ft = 0;
while (ccn1 != 0)
{
    // When you are down to 10 <= ccn1 < 100, store it
    if (ccn1 < 100 && ccn1 > 9) ft = ccn1;
    ccn1 /= 10;
    ++count;
}

你的第二个问题是如何进行比较。

if ((count == 15) && (ft =  34|37))

首先,=是赋值,==测试相等。其次,|是按位OR,||是逻辑OR。第三,你不能测试那样的多个值。正确的方式:

if ((count == 15) && (ft == 34 || ft == 37))