| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 521 人关注过本帖
标题:关于 ascii 码的问题(两者的区别)
只看楼主 加入收藏
dtxwz
Rank: 2
等 级:论坛游民
帖 子:79
专家分:45
注 册:2011-9-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
关于 ascii 码的问题(两者的区别)
左边正常,右边能运行正常但会弹出一个溢出的error(对结果不影响)下面两者不都是给char类型赋一个int型吗,为什么左边的没有溢出右边的却溢出了
#include<stdio.h>
int main()
{
    char ch;           //  char ch;
    int a;             //scanf("%d",&ch);
    scanf("%d",&a);    //printf("%c",ch);
    ch = a;
    printf("%c",ch);
    return 0;
}
可能是scanf("%d",&ch);不对,但左边的实际上不就是赋一个int 值 给char吗?为什么不能直接给ch赋int型。。
搜索更多相关主题的帖子: return 影响 
2014-05-04 20:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你有沒有看到左邊的編譯時會有警告?

授人以渔,不授人以鱼。
2014-05-04 21:00
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:1 
撑死和吃不饱的区别

总有那身价贱的人给作业贴回复完整的代码
2014-05-04 21:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:18 
兩邊確實是有區別的。左邊是把int的a賦給char的ch,編譯器在編譯時就已經發現這個操作,它會編譯出截取int數據的代碼生成,此時預先警告你可能會遇到數據丢失問題,但它仍然會按你的意圖生成可執行代碼,因爲你已經明確地寫成這樣了,它假定你是有意的。而右邊的,在scanf()中指定了%d,表示告訴scanf()將要讀入一個int型數據給後面參數地址賦値,而此時scanf()是不管那地址是什麽數據類型的(這正是它要使用指針而不是變量的原因),同時scanf()函數的編製,使用了可變參數格式,編譯器已經停止了在編譯時檢查參數類型的行爲,錯誤留到運行時發生,這個時候,ch才容納不下scanf()按計劃編製的int型數據,就彈出error崩潰信息,醜陋地終結程序(這再一次說明編譯時檢查強類型語言的重要性)。

授人以渔,不授人以鱼。
2014-05-04 21:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
scanf()和printf()函數,之所以總出現問題,明明是參數類型不對的代碼,也能編譯通過,結果運行時錯誤,很多初學者都不明白其中原因,解釋如上。

授人以渔,不授人以鱼。
2014-05-04 21:22
dtxwz
Rank: 2
等 级:论坛游民
帖 子:79
专家分:45
注 册:2011-9-18
收藏
得分:0 
哦,原来如此
2014-05-04 22:06
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:1 
输入格式 %d 指定了目的数值类型为 int,可你只给个 char,严重超载。
2014-05-04 23:08
uwfr
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-5-6
收藏
得分:0 
人懒学不精
2014-05-06 16:11
快速回复:关于 ascii 码的问题(两者的区别)
数据加载中...
 
   



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

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