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