作者revanchist (revanchist)
看板C_and_CPP
標題[問題] 溢位
時間Mon Sep 20 20:33:46 2021
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
int x;
int y;
int h;
x=9*52*47+3*68*47+1*68*52;
y=68*52*47;
h=100*100*100;
k=1000000;
printf("\nx=%d, y=%5d, h=%10d,k=%d\n", x,y,h,k);
return 0;
}
輸出的x,y,h,k 竟然溢位
這是怎麼回事
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.252.170.184 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1632141228.A.A7F.html
1F:→ nh60211as: 你用什麼編譯器,還有k沒宣告 09/20 20:37
2F:→ revanchist: turbo c++ 3.0 09/20 20:55
3F:→ nh60211as: 看網路上說Turbo C++的int只有16 bit,那當然會溢位 09/20 20:57
4F:推 Schottky: 為什麼會出現 Turbo C++ 3.0,我穿越到哪一年了? 09/20 21:00
5F:推 chuegou: Dr. strange on duty 09/20 21:09
6F:→ revanchist: 改成 long int 也一樣 09/20 21:22
7F:推 Schottky: 你那個年代的 CPU 要開保護模式才有 32-bit 可以用 09/20 21:27
8F:→ Schottky: Turbo C 就不支援保護模式指令啊 09/20 21:27
10F:→ Schottky: 下載這個 Code::Blocks 來編譯就不會溢位了 09/20 21:42
11F:→ revanchist: 現在的CPU也不能使用turbo c++ ˇ3.0的32-bit? 09/20 21:51
12F:推 Schottky: 這樣說好了,Turbo C 根本不認識新的 CPU 也無法使用新 09/20 22:26
13F:→ Schottky: CPU 的功能,因為他根本就不曉得怎麼用 09/20 22:27
14F:推 Schottky: 其實有點好奇為什麼會想用上個世紀的編譯器 09/20 22:30
15F:→ Schottky: 有什麼特殊的苦衷嗎? 09/20 22:30
16F:→ revanchist: 使用codeblocks int也是2 bytes 09/21 13:33
17F:→ revanchist: 怎麼解決? 09/21 13:33
18F:→ ctrlbreak: 自己實做大數運算 09/21 15:28
19F:推 dces4212: 看一下data model。codeblock可能用到原本的編譯器。另 09/21 16:33
20F:→ dces4212: ,你在啥平台? 09/21 16:33
21F:→ fatrabitree: int32_t int16_t 09/21 18:33
22F:推 Schottky: Turbo C 還能用什麼平台?但是你究竟用什麼平台? 09/21 18:37
23F:推 closer76: 其實我覺得就算在 TC++, long 應該也是 4 bytes. 雖然 D 09/21 19:07
24F:→ closer76: OS 是 16 位元的作業系統,TC++ 編出來的也是真實模式的 09/21 19:07
25F:→ closer76: 機器碼,但還是有辦法用軟體實作 32-bit 數值運送的 09/21 19:07
26F:→ closer76: 但,都已經 2021 年了,拜託別再用 TC++ 了 09/21 19:08
27F:→ lc85301: 改用 python 就好了 09/21 19:35
28F:→ revanchist: codeblocks 用到原來的編譯器, 索以才會出現這個錯誤 09/21 20:22
29F:→ Lipraxde: 有些課程用比較古老的教材就需要用古老的 compiler 09/21 20:49
30F:推 closer76: 那教材也太古老了,要學這種東西不如不要學。 09/21 21:36
31F:推 Schottky: 樓上太激動了點,但現代多的是免費新教材,何必看舊書? 09/21 21:51
32F:→ Schottky: 就算去地區公立圖書館也不難借到新一點的 C 語言書籍 09/21 21:52
33F:→ Lipraxde: 學校教材就用舊的啊,學生又控制不了XD 09/21 22:03
34F:→ Lipraxde: 不過也還好吧,了解一些過去精美的程式寫法我覺得不算 09/21 22:04
35F:→ Lipraxde: 壞事。 09/21 22:04
36F:推 closer76: 所以我感慨的就是學校居然還用這麼舊的教材。TC++ 是我 09/22 00:32
37F:→ closer76: 快30年前唸大學時用的編譯器。只用了不到一年,就改用 09/22 00:33
38F:→ closer76: BC++3.1。我記得那年就有在說TC++3.0版本太舊、有bug... 09/22 00:34
39F:→ closer76: 在20幾年前就被認為過時的東西,為什麼現在還叫學生用? 09/22 00:35
40F:→ closer76: 現在免費的編譯器那麼多,支援最新的C/C++語法,重點是 09/22 00:37
41F:→ closer76: 編輯器、除錯器比當年TC/BC的IDE強上幾百倍,為何不用? 09/22 00:38
42F:→ closer76: 再來,我不認為舊的東西不好。我這幾年也很痴迷一些老技 09/22 00:39
43F:→ closer76: 術,像是8-bit時代的繪圖技巧。但TC++3.0絕對跟「精美」 09/22 00:40
44F:→ closer76: 兩字無緣。如果老師真的要教DOS時代的技術,然後教 DOS 09/22 00:42
45F:→ closer76: extender 之類的東西,我就無話可說。 09/22 00:42
46F:推 Schottky: 了解歷史上的精美技巧應該是基礎打穩之後才要做的事 09/22 01:16
47F:→ Schottky: 然而教材過舊的狀況卻常常出現在高中職電腦課 09/22 01:17
48F:→ Schottky: 另一個我不滿的點是 Turbo C 或 VC 6.0 都是要付費的 09/22 01:19
49F:→ Schottky: 明明有新的免費開發環境,卻硬要用盜版品究竟有什麼毛病 09/22 01:19
50F:→ Schottky: (30年前很少學校有軟體也要採購的概念,現在則早已停售) 09/22 01:21
51F:推 closer76: 同意。又不是新的東西太貴買不起,更何況盜版本身就錯的 09/22 09:23
52F:→ zxzx8059: 10年前學校就用dec-c++或是後面用免費的vs… 09/22 21:07
53F:推 steve1012: 真的學新的就好 09/23 11:41
54F:→ Lipraxde: 我遇到需要用 TC 的是研究所課程啦,但也就其中一兩堂 09/23 11:42
55F:→ Lipraxde: 需要而已,主要也不是在教基礎的程式。 09/23 11:42
56F:→ Lipraxde: 至於說教材過舊嘛...要教的道理都是通的,也沒很嚴重? 09/23 11:42
57F:推 pponywong: 現在用TC幾乎都是看real mode的asm code了 09/23 11:45
58F:→ pponywong: 現在教assembly code也不一定是必要了 09/23 11:46
59F:→ pponywong: 尤其是64-bit CPU上的assembly code 根本太複雜了 09/23 11:47
60F:推 alan23273850: 這篇文我看下來好好笑 哈哈哈 09/26 11:16
61F:噓 F04E: 幹 都民國110年了還在用Turbo C++ 3.0 09/28 12:36
62F:→ F04E: Visual Studio Community 免費 09/28 12:37
63F:推 espresso1: MASM 6跟VC 6我還真的買過 10/28 16:21