标题:scanf的資料格式問題
只看楼主
andrew9
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-12-12
结帖率:100%
 问题点数:0 回复次数:3 
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
never_yzq
Rank: 4
等 级:业余侠客
帖 子:112
专家分:213
注 册:2012-5-25
得分:0 
我编译了一下,没有问题,不知道是不是你的编译器的问题!
2012-06-18 09:06
小糊涂神c30
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:198
专家分:809
注 册:2012-4-25
得分:0 
孩子,发的时候别光为了美观用繁体字,顾一下大家好不好?看你的结帖率为0,又没有问题点数,我想回答你问题的人应该不愿意来呀!
我帮你运行了一下,没有问题,我用的是VC++6.0的编译器,不知道你用的是什么?
纠正一下%d是整形 不是长整形 %ld才是长整形!
%u也不是无符号的长整形,只是无符号的整形!
还是看看书,自己再考虑一下吧!
2012-06-18 09:13
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.055891 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved