标题:scanf的資料格式問題
取消只看楼主
andrew9
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-12-12
结帖率:100%
 问题点数:0 回复次数:1 
scanf的資料格式問題
#include <stdio.h>
#include <stdlib.h>
 
main()
{
      signed long int a;
      
      scanf("%d", &a);
      printf("a=%d\n", a);
      
      system("pause");
}

執行結果:
4294967295
a=-1
請按任意鍵繼續 . . .

============================
#include <stdio.h>
#include <stdlib.h>
 
main()
{
      signed long int a;
      
      scanf("%u", &a);
      printf("a=%d\n", a);
      
      system("pause");
}

執行結果:
4294967295
a=-1
請按任意鍵繼續 . . .


大家好,請問我在scanf上一個用%d , 一個用 %u,可是為什麼最後a的結果都會是 -1呢?
%d => 不是應該表示有號長整數
%u => 不是應該表示無號長整數

我知道4294967295這個數字對於變數a(有號長整數)是溢位,會捨去較高的位元最後為-1,
但是scanf 那邊使用%d , %u 都沒有影響嗎?
搜索更多相关主题的帖子: long include system 
2012-06-18 02:54
andrew9
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-12-12
得分:0 
謝謝您的解釋,之前是我誤解:),另外下面有個問題也想請教您:
(我使用的是Dev-C++ 4.9.9.2,我是台灣人所以才會打繁體字,呵)

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

main() {
    unsigned long int a;
    unsigned short int b;
   
    printf("輸入a: ");
    fflush(stdin);
    scanf("%d", &a);
   
    printf("輸入b: ");
    fflush(stdin);
    scanf("%d", &b);
   
    printf("a=%d , b=%d\n", a, b);
   
    system("pause");
}


執行結果:
輸入a: 123
輸入b: 456
a=0 , b=456
請按任意鍵繼續 . . .


請問為什麼a=0 ?????? 我明明輸入123
2012-06-19 06:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-371751-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.207855 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved