PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 疑難雜症區
帳戶
密碼
 

  回應
 
主題工具
SGI
Major Member
 
SGI的大頭照
 

加入日期: Sep 2003
文章: 263
VC++的幾個問題part04..

諸位高手大大好唷
小弟要有問題要發問了
仍然請經驗老到的大大們幫小弟解惑唷
(1)小弟打了一段程式碼:

#include "stdafx.h"
#include "iomanip.h"
#include "iostream"

using namespace std;


int main(int argc, char* argv[])
{
int i=0;
cout <<endl<<"\t\t\t"<<"此為公英制單位的轉換表"<<"\n\n\n";
cout <<setw(3)<<"|"
<<setw(16)<<"公尺"
<<setw(16)<<"英寸"
<<setw(16)<<"英呎"
<<setw(16)<<"英哩"
<<endl;
for (i=0;i<=10;i++)
cout <<"-------";
cout <<endl;
cout <<setw(3)<<"|"
<<setw(16)<<"1000"
<<setw(16)<<"39370"
<<setw(16)<<"3280.83"
<<setw(16)<<"0.62136"
<<endl;
cout <<setw(3)<<"|"
<<setw(16)<<"1"
<<setw(16)<<"39.370"
<<setw(16)<<"3.28083"
<<setw(16)<<"0.0006214"
<<"\n\n";
return 0;
}

這個結果是Compile不過的
因為原本的程式碼中不含"using namespace std;"
這一行,但卻能正常執行
後來忘記加這一行,加上去之後compile反而過不了了
小弟想好久都不知為什麼?

(2)long,double是屬於什麼樣的資料型態啊?
跟int ,float差別在哪兒呢?

請多指教唷
     
      
舊 2003-09-22, 04:25 PM #1
回應時引用此文章
SGI離線中  
SGI
Major Member
 
SGI的大頭照
 

加入日期: Sep 2003
文章: 263
哈~!
不好意思,先自首一下
我已經抓到毛病在哪兒了
我把#include "iomanip.h"
後面多打一個".h"了
但是為什麼有沒有這一行"using namespace std;"
結果都一樣呢
 
舊 2003-09-22, 05:46 PM #2
回應時引用此文章
SGI離線中  
上善若水
Major Member
 

加入日期: Oct 2000
您的住址: AKL
文章: 115
as i can remember...

if you are using "iomanip.h" then
you are using OLD version of standard library

if you use "iomanip" then it includes new standard library,
that extensively uses namespace
and all basic functions/objects are under namespace "std"
that's why you need "using namespace std;"
which make namespace "std" as default namespace
to avoid typing std.xxx all the time

integer, long short are for INTEGERS, eg. 1, -5, 29, 888
float, single, double are for real numbers, e.g -22.59301, 0.2593958
check reference manual for details

p.s.
if you still don't get it, email me if you want
sorry I can't type chinese right now
but i can type chinese at home if necessary

舊 2003-09-23, 08:33 AM #3
回應時引用此文章
上善若水離線中  
SGI
Major Member
 
SGI的大頭照
 

加入日期: Sep 2003
文章: 263
引用:
Originally posted by 上善若水
as i can remember...

if you are using "iomanip.h" then
you are using OLD version of standard library

if you use "iomanip" then it includes new standard library,
that extensively uses namespace
and all basic functions/objects are under namespace "std"
that's why you need "using namespace std;"
which make namespace "std" as default namespace
to avoid typing std.xxx all the time

integer, long short are for INTEGERS, eg. 1, -5, 29, 888
float, single, double are for real numbers, e.g -22.59301, 0.2593958
check reference manual for details

p.s.
if you still don't get it, email me if you want
sorry I can't type chinese right now
but i can type chinese at home if necessary


--------------------------------------------------------------
首先非常感謝您的答覆唷
您應該是在國外吧
我不知道您是臺灣的留學生還是土生土長的外國華人
我先用中文跟您溝通,若您閱讀或打中文有困難
我們再來用英語,因為畢竟我太久沒碰英文了,ok?

Thanks for your reply.
I guess you're not in Taiwan now.
I don't know how much you understand Chinese.
Please tell me if you really have trouble in reading or typing Chinese.
This I still talk to you in Chinese,ok?

如果我沒翻譯錯的話
iomanip加入了許多新的標準函式庫
有別於舊的iomanip.h
而使用"using namespace std"
只是為了避免任何時候都要打上std.xxx的麻煩是嗎?
既然VC++使用了很多的stand library,那是不是代表
不管什麼樣的程式
開頭一定要加入" using namespace std; "這一行呢?

再次感謝您的說明唷
舊 2003-09-23, 10:35 AM #4
回應時引用此文章
SGI離線中  
harrisonlin
Advance Member
 
harrisonlin的大頭照
 

加入日期: Jun 2003
您的住址: Taipei
文章: 442
using namespace std 就如這句話的意思:使用一個名為std的namespace。Namespace是C++導入的一個機制,可以保持變數空間的純淨,不會讓不同的程式的變數名稱互相干擾。你可以查看一下C++所提供的標準header file(沒有.h結尾的),裡面一定有定義一個名為std的namespace,所以你要使用之前,要先告知編譯器指明的namespace。
舊 2003-09-23, 01:28 PM #5
回應時引用此文章
harrisonlin離線中  
SGI
Major Member
 
SGI的大頭照
 

加入日期: Sep 2003
文章: 263
引用:
Originally posted by harrisonlin
using namespace std 就如這句話的意思:使用一個名為std的namespace。Namespace是C++導入的一個機制,可以保持變數空間的純淨,不會讓不同的程式的變數名稱互相干擾。你可以查看一下C++所提供的標準header file(沒有.h結尾的),裡面一定有定義一個名為std的namespace,所以你要使用之前,要先告知編譯器指明的namespace。

----------------------------------------------------------------
呵呵...再見到harrisonlin大大
真是恍如隔世啊
真是不好意思唷 因出了點"差錯"
我之前的帳號已被停用囉
現在改成這個帳號
希望大大以後仍給予指導唷

(1)照大大這麼說
只要是標頭檔沒有.h的
就一定要使用namespace囉?
那除了std,是否還有別的namespace呢?

(2)依上善若水大大給我的回應
integer, long short are for INTEGERS
float, single, double are for real numbers
那麼long,short,int
以及float,single,double到底是差在哪兒?數值的大小嗎?
麻煩大大指點一下唷
舊 2003-09-23, 06:06 PM #6
回應時引用此文章
SGI離線中  
asccpu
Master Member
 

加入日期: Jan 2002
您的住址: U.S.S AGC
文章: 1,669
引用:
那麼long,short,int
以及float,single,double到底是差在哪兒?數值的大小嗎?

我不會C,但我提供一下 INFORMAT:
long 長整數,也就是4BYTES
short 短整數,2BYTES
int 整數 1BYTE
single 單精密度,用4BYTES來表示
double 倍精密度,8BYTES表示
float 這我就不知了
不知你會ASM嗎,若會,上述的在ASM內的數值宣告為 DD ,DW ,DB ,DD 1.0 ,DQ 1.0
舊 2003-09-23, 06:25 PM #7
回應時引用此文章
asccpu離線中  
harrisonlin
Advance Member
 
harrisonlin的大頭照
 

加入日期: Jun 2003
您的住址: Taipei
文章: 442
咦?你沒說我倒是沒有發現你的帳號有變...看到"VC++問題"我就跑進來了!

(1)需要指名namespace為std,是因為C++標準函式庫中所有的名稱都宣告在這個namespace之下,為了跟傳統的header file(沒有任何namespace)有所區分,才會去掉.h。所以如果你自己有一個header file,裡面也有宣告某個namespace,你想把它存成"XXX"或是"XXX.h"都無所謂,只要在使用時記得指名namespace就成了!

(2)變數型別不單牽涉到變數值的範圍,還有變數的型態。這些東西,你可以從大部份的C++書籍中,討論"基本變數型態"的章節中找到。
舊 2003-09-23, 06:26 PM #8
回應時引用此文章
harrisonlin離線中  
SGI
Major Member
 
SGI的大頭照
 

加入日期: Sep 2003
文章: 263
引用:
Originally posted by harrisonlin
咦?你沒說我倒是沒有發現你的帳號有變...看到"VC++問題"我就跑進來了!

(1)需要指名namespace為std,是因為C++標準函式庫中所有的名稱都宣告在這個namespace之下,為了跟傳統的header file(沒有任何namespace)有所區分,才會去掉.h。所以如果你自己有一個header file,裡面也有宣告某個namespace,你想把它存成"XXX"或是"XXX.h"都無所謂,只要在使用時記得指名namespace就成了!

(2)變數型別不單牽涉到變數值的範圍,還有變數的型態。這些東西,你可以從大部份的C++書籍中,討論"基本變數型態"的章節中找到。

----------------------------------------------------------------------
原來如此...
果然有問題還是必須發問唷
畢竟憑空想像跟事實還是有點差別
幸好有來發問 否則又會被自己的猜測誤導了
謝謝大大今天的線上教學唷
舊 2003-09-23, 06:59 PM #9
回應時引用此文章
SGI離線中  
SGI
Major Member
 
SGI的大頭照
 

加入日期: Sep 2003
文章: 263
引用:
Originally posted by asccpu
我不會C,但我提供一下 INFORMAT:
long 長整數,也就是4BYTES
short 短整數,2BYTES
int 整數 1BYTE
single 單精密度,用4BYTES來表示
double 倍精密度,8BYTES表示
float 這我就不知了
不知你會ASM嗎,若會,上述的在ASM內的數值宣告為 DD ,DW ,DB ,DD 1.0 ,DQ 1.0

-------------------------------------------------------------
呵呵..又是牽涉到計概的東西啊
看來要把vc++跟計概完全分開真的是不可能啊
感謝大大提供的訊息唷
ASM...是指組合語言嗎?
以前有想過要學,但翻了翻對我來說太困難了
畢竟我不是電子電機科班出身的
我是唸機械的
當時只學過Pascal及Basic而已(DOS版)
舊 2003-09-23, 07:03 PM #10
回應時引用此文章
SGI離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是02:03 AM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。