#7387: 用了long long int後 b/c會等於1?


sam574 (liu)

學校 : 國立中興大學
編號 : 15117
來源 : [140.120.15.252]
最後登入時間 :
2014-02-11 16:18:00
a244. 新手訓練 ~ for + if -- 新手訓練系列 ~ 1 | From: [60.244.174.27] | 發表日期 : 2013-01-08 19:15

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

int main()
{
    int N;

    while(scanf("%d",&N)!=EOF)
    {
        int i,a;
        long long int b,c;
        for(i=0;i<N;i++)
        {
            scanf("%d %d %d",&a,&b,&c);
            switch(a)
            {
                case 1:
                    printf("%d\n",b+c);
                    break;
                case 2:
                    printf("%d\n",b-c);
                    break;
                case 3:
                    printf("%d\n",b*c);
                    break;
                case 4:
                    printf("%d\n",b/c);
                    break;
            }
        }
    }
    return 0;
}

=========================================

一開始用int時沒有錯 但是會overflow

改用long long int 後,b/c卻會錯誤

會甚麼會這樣哩??

 

 
#7389: Re:用了long long int後 b/c會等於1?


akira0331 (小迷糊)

學校 : 不指定學校
編號 : 26613
來源 : [203.70.194.240]
最後登入時間 :
2013-07-29 09:30:29
a244. 新手訓練 ~ for + if -- 新手訓練系列 ~ 1 | From: [203.70.194.240] | 發表日期 : 2013-01-09 10:12

#include
#include

int main()
{
    int N;

    while(scanf("%d",&N)!=EOF)
    {
        int i,a;
        long long int b,c;
        for(i=0;i        {
            scanf("%d %d %d",&a,&b,&c);
            switch(a)
            {
                case 1:
                    printf("%d\n",b+c);
                    break;
                case 2:
                    printf("%d\n",b-c);
                    break;
                case 3:
                    printf("%d\n",b*c);
                    break;
                case 4:
                    printf("%d\n",b/c);
                    break;
            }
        }
    }
    return 0;
}

=========================================

一開始用int時沒有錯 但是會overflow

改用long long int 後,b/c卻會錯誤

會甚麼會這樣哩??



要改用 %lld(LLD) 
ZeroJudge Forum