_Complex關(guān)鍵字可以提供比較方便的復(fù)數(shù)運(yùn)算,例如:
“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)建站的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個(gè)不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對(duì)成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無(wú)止境。
#include complex.h
double imaginary z=5.3I
注意事項(xiàng):
1.?每個(gè)程序中一定包含main()函數(shù),盡管C語(yǔ)言中對(duì)函數(shù)命名沒(méi)有限制。
2.?printf函數(shù)永遠(yuǎn)不會(huì)自動(dòng)換行,只能用\n來(lái)實(shí)現(xiàn), 回車(chē)鍵進(jìn)行的換行在編譯中會(huì)出現(xiàn)錯(cuò)誤信息。
3.?在vs2008中編譯,測(cè)試需要加 system("pause");來(lái)暫停dos自動(dòng)退出導(dǎo)致的printf無(wú)法顯示。
4.?所有自定義變量必須聲明才能使用。
擴(kuò)展資料:
在數(shù)學(xué)中,虛數(shù)是對(duì)實(shí)數(shù)系的擴(kuò)展。利用復(fù)數(shù)可以構(gòu)建四維坐標(biāo)系,四維坐標(biāo)系是三維實(shí)數(shù)坐標(biāo)系與三維虛數(shù)坐標(biāo)系組合而成的。三維實(shí)數(shù)坐標(biāo)系上的點(diǎn)與四維復(fù)數(shù)坐標(biāo)系存在映射對(duì)應(yīng)關(guān)系,每一個(gè)實(shí)數(shù)坐標(biāo)點(diǎn)對(duì)應(yīng)兩個(gè)不同的四維坐標(biāo)點(diǎn)。因此,虛數(shù)只有在四維坐標(biāo)中才具有現(xiàn)實(shí)的數(shù)值意義。
我們可以在平面直角坐標(biāo)系中畫(huà)出虛數(shù)系統(tǒng)。如果利用橫軸表示全體實(shí)數(shù),那么縱軸即可表示虛數(shù)。整個(gè)平面上每一點(diǎn)對(duì)應(yīng)著一個(gè)復(fù)數(shù),稱為復(fù)平面。橫軸和縱軸也改稱為實(shí)軸和虛軸。在此時(shí),一點(diǎn)P坐標(biāo)為P(a,bi),將坐標(biāo)乘上i即點(diǎn)繞圓心逆時(shí)針旋轉(zhuǎn)90度。
虛數(shù)單位“i”首先為瑞士數(shù)學(xué)家歐拉所創(chuàng)用,到德國(guó)數(shù)學(xué)家高斯提倡才普遍使用。
您好,很高興回答您的問(wèn)題。
由于沒(méi)有看到其他的內(nèi)容所以只能從結(jié)構(gòu)上來(lái)說(shuō)明相關(guān)含義。
void digdisplay()表示的是這個(gè)函數(shù)的定義,其中void表示函數(shù)不帶任何的返回值,digdisplay表示的是函數(shù)名,括號(hào)中表示函數(shù)的參數(shù),這里是空的,所以表示不帶任何的返回值。
以上就是我的回答,敬請(qǐng)指正。
有虛函數(shù)的話就有虛表,虛表保存虛函數(shù)地址,一個(gè)地址占用的長(zhǎng)度根據(jù)編譯器不同有可能不同,vs里面是8個(gè)字節(jié),在devc++里面是4個(gè)字節(jié)。類和結(jié)構(gòu)體的對(duì)齊方式相同,有兩條規(guī)則
1、數(shù)據(jù)成員對(duì)齊規(guī)則:結(jié)構(gòu)(struct)(或聯(lián)合(union))的數(shù)據(jù)成員,第一個(gè)數(shù)據(jù)成員放在offset為0的地方,以后每個(gè)數(shù)據(jù)成員的對(duì)齊按照#pragma pack指定的數(shù)值和這個(gè)數(shù)據(jù)成員自身長(zhǎng)度中,比較小的那個(gè)進(jìn)行。
2、結(jié)構(gòu)(或聯(lián)合)的整體對(duì)齊規(guī)則:在數(shù)據(jù)成員完成各自對(duì)齊之后,結(jié)構(gòu)(或聯(lián)合)本身也要進(jìn)行對(duì)齊,對(duì)齊將按照#pragma pack指定的數(shù)值和結(jié)構(gòu)(或聯(lián)合)最大數(shù)據(jù)成員長(zhǎng)度中,比較小的那個(gè)進(jìn)行
下面是我收集的關(guān)于內(nèi)存對(duì)齊的一篇很好的文章:
在最近的項(xiàng)目中,我們涉及到了“內(nèi)存對(duì)齊”技術(shù)。對(duì)于大部分程序員來(lái)說(shuō),“內(nèi)存對(duì)齊”對(duì)他們來(lái)說(shuō)都應(yīng)該是“透明的”?!皟?nèi)存對(duì)齊”應(yīng)該是編譯器的 “管轄范圍”。編譯器為程序中的每個(gè)“數(shù)據(jù)單元”安排在適當(dāng)?shù)奈恢蒙?。但是C語(yǔ)言的一個(gè)特點(diǎn)就是太靈活,太強(qiáng)大,它允許你干預(yù)“內(nèi)存對(duì)齊”。如果你想了解更加底層的秘密,“內(nèi)存對(duì)齊”對(duì)你就不應(yīng)該再透明了。
一、內(nèi)存對(duì)齊的原因
大部分的參考資料都是如是說(shuō)的:
1、平臺(tái)原因(移植原因):不是所有的硬件平臺(tái)都能訪問(wèn)任意地址上的任意數(shù)據(jù)的;某些硬件平臺(tái)只能在某些地址處取某些特定類型的數(shù)據(jù),否則拋出硬件異常。
2、性能原因:數(shù)據(jù)結(jié)構(gòu)(尤其是棧)應(yīng)該盡可能地在自然邊界上對(duì)齊。原因在于,為了訪問(wèn)未對(duì)齊的內(nèi)存,處理器需要作兩次內(nèi)存訪問(wèn);而對(duì)齊的內(nèi)存訪問(wèn)僅需要一次訪問(wèn)。
二、對(duì)齊規(guī)則
每個(gè)特定平臺(tái)上的編譯器都有自己的默認(rèn)“對(duì)齊系數(shù)”(也叫對(duì)齊模數(shù))。程序員可以通過(guò)預(yù)編譯命令#pragma pack(n),n=1,2,4,8,16來(lái)改變這一系數(shù),其中的n就是你要指定的“對(duì)齊系數(shù)”。
規(guī)則:
1、數(shù)據(jù)成員對(duì)齊規(guī)則:結(jié)構(gòu)(struct)(或聯(lián)合(union))的數(shù)據(jù)成員,第一個(gè)數(shù)據(jù)成員放在offset為0的地方,以后每個(gè)數(shù)據(jù)成員的對(duì)齊按照#pragma pack指定的數(shù)值和這個(gè)數(shù)據(jù)成員自身長(zhǎng)度中,比較小的那個(gè)進(jìn)行。
2、結(jié)構(gòu)(或聯(lián)合)的整體對(duì)齊規(guī)則:在數(shù)據(jù)成員完成各自對(duì)齊之后,結(jié)構(gòu)(或聯(lián)合)本身也要進(jìn)行對(duì)齊,對(duì)齊將按照#pragma pack指定的數(shù)值和結(jié)構(gòu)(或聯(lián)合)最大數(shù)據(jù)成員長(zhǎng)度中,比較小的那個(gè)進(jìn)行。
3、結(jié)合1、2顆推斷:當(dāng)#pragma pack的n值等于或超過(guò)所有數(shù)據(jù)成員長(zhǎng)度的時(shí)候,這個(gè)n值的大小將不產(chǎn)生任何效果。
三、試驗(yàn)
我們通過(guò)一系列例子的詳細(xì)說(shuō)明來(lái)證明這個(gè)規(guī)則吧!
我試驗(yàn)用的編譯器包括GCC 3.4.2和VC6.0的C編譯器,平臺(tái)為Windows XP + Sp2。
我們將用典型的struct對(duì)齊來(lái)說(shuō)明。首先我們定義一個(gè)struct:
#pragma pack(n) /* n = 1, 2, 4, 8, 16 */
struct test_t {
int a;
char b;
short c;
char d;
};
#pragma pack(n)
首先我們首先確認(rèn)在試驗(yàn)平臺(tái)上的各個(gè)類型的size,經(jīng)驗(yàn)證兩個(gè)編譯器的輸出均為:
sizeof(char) = 1
sizeof(short) = 2
sizeof(int) = 4
我們的試驗(yàn)過(guò)程如下:通過(guò)#pragma pack(n)改變“對(duì)齊系數(shù)”,然后察看sizeof(struct test_t)的值。
1、1字節(jié)對(duì)齊(#pragma pack(1))
輸出結(jié)果:sizeof(struct test_t) = 8 [兩個(gè)編譯器輸出一致]
分析過(guò)程:
1) 成員數(shù)據(jù)對(duì)齊
#pragma pack(1)
struct test_t {
int a; /* 長(zhǎng)度4 1 按1對(duì)齊;起始o(jì)ffset=0 0%1=0;存放位置區(qū)間[0,3] */
char b; /* 長(zhǎng)度1 = 1 按1對(duì)齊;起始o(jì)ffset=4 4%1=0;存放位置區(qū)間[4] */
short c; /* 長(zhǎng)度2 1 按1對(duì)齊;起始o(jì)ffset=5 5%1=0;存放位置區(qū)間[5,6] */
char d; /* 長(zhǎng)度1 = 1 按1對(duì)齊;起始o(jì)ffset=7 7%1=0;存放位置區(qū)間[7] */
};
#pragma pack()
成員總大小=8
2) 整體對(duì)齊
整體對(duì)齊系數(shù) = min((max(int,short,char), 1) = 1
整體大小(size)=$(成員總大小) 按 $(整體對(duì)齊系數(shù)) 圓整 = 8 /* 8%1=0 */ [注1]
2、2字節(jié)對(duì)齊(#pragma pack(2))
輸出結(jié)果:sizeof(struct test_t) = 10 [兩個(gè)編譯器輸出一致]
分析過(guò)程:
1) 成員數(shù)據(jù)對(duì)齊
#pragma pack(2)
struct test_t {
int a; /* 長(zhǎng)度4 2 按2對(duì)齊;起始o(jì)ffset=0 0%2=0;存放位置區(qū)間[0,3] */
char b; /* 長(zhǎng)度1 2 按1對(duì)齊;起始o(jì)ffset=4 4%1=0;存放位置區(qū)間[4] */
short c; /* 長(zhǎng)度2 = 2 按2對(duì)齊;起始o(jì)ffset=6 6%2=0;存放位置區(qū)間[6,7] */
char d; /* 長(zhǎng)度1 2 按1對(duì)齊;起始o(jì)ffset=8 8%1=0;存放位置區(qū)間[8] */
};
#pragma pack()
成員總大小=9
2) 整體對(duì)齊
整體對(duì)齊系數(shù) = min((max(int,short,char), 2) = 2
整體大小(size)=$(成員總大小) 按 $(整體對(duì)齊系數(shù)) 圓整 = 10 /* 10%2=0 */
3、4字節(jié)對(duì)齊(#pragma pack(4))
輸出結(jié)果:sizeof(struct test_t) = 12 [兩個(gè)編譯器輸出一致]
分析過(guò)程:
1) 成員數(shù)據(jù)對(duì)齊
#pragma pack(4)
struct test_t {
int a; /* 長(zhǎng)度4 = 4 按4對(duì)齊;起始o(jì)ffset=0 0%4=0;存放位置區(qū)間[0,3] */
char b; /* 長(zhǎng)度1 4 按1對(duì)齊;起始o(jì)ffset=4 4%1=0;存放位置區(qū)間[4] */
short c; /* 長(zhǎng)度2 4 按2對(duì)齊;起始o(jì)ffset=6 6%2=0;存放位置區(qū)間[6,7] */
char d; /* 長(zhǎng)度1 4 按1對(duì)齊;起始o(jì)ffset=8 8%1=0;存放位置區(qū)間[8] */
};
#pragma pack()
成員總大小=9
2) 整體對(duì)齊
整體對(duì)齊系數(shù) = min((max(int,short,char), 4) = 4
整體大小(size)=$(成員總大小) 按 $(整體對(duì)齊系數(shù)) 圓整 = 12 /* 12%4=0 */
4、8字節(jié)對(duì)齊(#pragma pack(8))
輸出結(jié)果:sizeof(struct test_t) = 12 [兩個(gè)編譯器輸出一致]
分析過(guò)程:
1) 成員數(shù)據(jù)對(duì)齊
#pragma pack(8)
struct test_t {
int a; /* 長(zhǎng)度4 8 按4對(duì)齊;起始o(jì)ffset=0 0%4=0;存放位置區(qū)間[0,3] */
char b; /* 長(zhǎng)度1 8 按1對(duì)齊;起始o(jì)ffset=4 4%1=0;存放位置區(qū)間[4] */
short c; /* 長(zhǎng)度2 8 按2對(duì)齊;起始o(jì)ffset=6 6%2=0;存放位置區(qū)間[6,7] */
char d; /* 長(zhǎng)度1 8 按1對(duì)齊;起始o(jì)ffset=8 8%1=0;存放位置區(qū)間[8] */
};
#pragma pack()
成員總大小=9
2) 整體對(duì)齊
整體對(duì)齊系數(shù) = min((max(int,short,char), 8) = 4
整體大小(size)=$(成員總大小) 按 $(整體對(duì)齊系數(shù)) 圓整 = 12 /* 12%4=0 */
5、16字節(jié)對(duì)齊(#pragma pack(16))
輸出結(jié)果:sizeof(struct test_t) = 12 [兩個(gè)編譯器輸出一致]
分析過(guò)程:
1) 成員數(shù)據(jù)對(duì)齊
#pragma pack(16)
struct test_t {
int a; /* 長(zhǎng)度4 16 按4對(duì)齊;起始o(jì)ffset=0 0%4=0;存放位置區(qū)間[0,3] */
char b; /* 長(zhǎng)度1 16 按1對(duì)齊;起始o(jì)ffset=4 4%1=0;存放位置區(qū)間[4] */
short c; /* 長(zhǎng)度2 16 按2對(duì)齊;起始o(jì)ffset=6 6%2=0;存放位置區(qū)間[6,7] */
char d; /* 長(zhǎng)度1 16 按1對(duì)齊;起始o(jì)ffset=8 8%1=0;存放位置區(qū)間[8] */
};
#pragma pack()
成員總大小=9
2) 整體對(duì)齊
整體對(duì)齊系數(shù) = min((max(int,short,char), 16) = 4
整體大小(size)=$(成員總大小) 按 $(整體對(duì)齊系數(shù)) 圓整 = 12 /* 12%4=0 */
四、結(jié)論
8字節(jié)和16字節(jié)對(duì)齊試驗(yàn)證明了“規(guī)則”的第3點(diǎn):“當(dāng)#pragma pack的n值等于或超過(guò)所有數(shù)據(jù)成員長(zhǎng)度的時(shí)候,這個(gè)n值的大小將不產(chǎn)生任何效果”。另外內(nèi)存對(duì)齊是個(gè)很復(fù)雜的東西,上面所說(shuō)的在有些時(shí)候也可能不正確。呵呵^_^
[注1]
什么是“圓整”?
舉例說(shuō)明:如上面的8字節(jié)對(duì)齊中的“整體對(duì)齊”,整體大小=9 按 4 圓整 = 12
圓整的過(guò)程:從9開(kāi)始每次加一,看是否能被4整除,這里9,10,11均不能被4整除,到12時(shí)可以,則圓整結(jié)束。