Re: c++ 求平方 我解不出來
※ 引述《jiannrong@kkcity.com.tw ( )》之銘言:
> 請問我這樣寫 語法上哪裡有錯呢
> 謝謝
語法沒有錯,因為可以通過編譯,
語義有錯,其它板友已經回答你了;
語法錯誤一定無法通過編譯,
而語義錯誤可能能通過編譯,
也可能無法通過編譯。
sqrt 傳回的是 double,
你用 int 去接的語義會多做一件事,
就是還要將傳回值強制轉成 int,
並負擔精確度上的損失,
你原本希望做的事情沒有這麼多,
所以屬於語義上的錯誤。
另外,
由於你沒有明確以 cast 的方式指定這件事,
所以 compiler 應該會以 warning 的方式警告你,
你不應該隨便忽略它,
在 C++ 只要是會遺失精確度的隱式轉型,
都會丟出 warning 警告 user,
所以如果你的語義真的是要做轉型,
m=sqrt(num); 應該寫成 m = static_cast<int>(sqrt(num));,
或者是 m = (int)sqrt(num);,
讓 compiler 以及將來閱讀你程式碼的人,
明確的知道你真的是想做 double -> int 的轉換,
這樣才是好的做法。
--
Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net
School: National Tsing Hua University Department: Computer Science
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Undecided
Homepage: https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮ < IP:140.119.164.252 > ╰─╮
╚╦═╦╝ ╰ * From:61-230-234-91.dynamic.hinet.net
─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 ◎
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章