锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美丰满高潮xxxx喷水动漫,欧美日韩视频在线观看一区二区三区,久久成人国产http://m.shnenglu.com/SEMAN/鏇劇粡娌ф搗闅句負姘淬侀櫎鍗村帆灞變笉鏄簯zh-cnSun, 16 Nov 2025 04:10:36 GMTSun, 16 Nov 2025 04:10:36 GMT60GCC 鍙傛暟璇﹁Вhttp://m.shnenglu.com/SEMAN/archive/2005/11/30/1440.html鍛沖叏姣忔棩C++鍛沖叏姣忔棩C++Wed, 30 Nov 2005 05:36:00 GMThttp://m.shnenglu.com/SEMAN/archive/2005/11/30/1440.htmlhttp://m.shnenglu.com/SEMAN/comments/1440.htmlhttp://m.shnenglu.com/SEMAN/archive/2005/11/30/1440.html#Feedback3http://m.shnenglu.com/SEMAN/comments/commentRss/1440.htmlhttp://m.shnenglu.com/SEMAN/services/trackbacks/1440.html[浠嬬粛]
gcc and g++鍒嗗埆鏄痝nu鐨刢 & c++緙栬瘧鍣?gcc/g++鍦ㄦ墽琛岀紪璇戝伐浣滅殑鏃跺欙紝鎬誨叡闇瑕?姝?

1.棰勫鐞?鐢熸垚.i鐨勬枃浠禰棰勫鐞嗗櫒cpp]
2.灝嗛澶勭悊鍚庣殑鏂囦歡涓嶈漿鎹㈡垚姹囩紪璇█,鐢熸垚鏂囦歡.s[緙栬瘧鍣╡gcs]
3.鏈夋眹緙栧彉涓虹洰鏍囦唬鐮?鏈哄櫒浠g爜)鐢熸垚.o鐨勬枃浠禰姹囩紪鍣╝s]
4.榪炴帴鐩爣浠g爜,鐢熸垚鍙墽琛岀▼搴廩閾炬帴鍣╨d]
[鍙傛暟璇﹁В]
-x language filename
銆 璁懼畾鏂囦歡鎵浣跨敤鐨勮璦,浣垮悗緙鍚嶆棤鏁?瀵逛互鍚庣殑澶氫釜鏈夋晥.涔熷氨鏄牴鎹害瀹欳璇█鐨勫悗
緙鍚嶇О鏄?c鐨勶紝鑰孋++鐨勫悗緙鍚嶆槸.C鎴栬?cpp,濡傛灉浣犲緢涓э紝鍐沖畾浣犵殑C浠g爜鏂囦歡鐨勫悗緙
鍚嶆槸.pig 鍝堝搱錛岄偅浣犲氨瑕佺敤榪欎釜鍙傛暟,榪欎釜鍙傛暟瀵逛粬鍚庨潰鐨勬枃浠跺悕閮借搗浣滅敤錛岄櫎闈炲埌浜?
涓嬩竴涓弬鏁扮殑浣跨敤銆?
銆銆鍙互浣跨敤鐨勫弬鏁板悧鏈変笅闈㈢殑榪欎簺
銆銆`c', `objective-c', `c-header', `c++', `cpp-output', `assembler', and `a
ssembler-with-cpp'.
銆銆鐪嬪埌鑻辨枃錛屽簲璇ュ彲浠ョ悊瑙g殑銆?
銆銆渚嬪瓙鐢ㄦ硶:
銆銆gcc -x c hello.pig
銆銆
-x none filename
銆銆鍏蟲帀涓婁竴涓夐」錛屼篃灝辨槸璁ゞcc鏍規嵁鏂囦歡鍚嶅悗緙錛岃嚜鍔ㄨ瘑鍒枃浠剁被鍨?
銆銆渚嬪瓙鐢ㄦ硶:
銆銆gcc -x c hello.pig -x none hello2.c
銆銆
-c
銆銆鍙縺媧婚澶勭悊,緙栬瘧,鍜屾眹緙?涔熷氨鏄粬鍙妸紼嬪簭鍋氭垚obj鏂囦歡
銆銆渚嬪瓙鐢ㄦ硶:
銆銆gcc -c hello.c
銆銆浠栧皢鐢熸垚.o鐨刼bj鏂囦歡
-S
銆銆鍙縺媧婚澶勭悊鍜岀紪璇戯紝灝辨槸鎸囨妸鏂囦歡緙栬瘧鎴愪負姹囩紪浠g爜銆?
銆銆渚嬪瓙鐢ㄦ硶
銆銆gcc -S hello.c
銆銆浠栧皢鐢熸垚.s鐨勬眹緙栦唬鐮侊紝浣犲彲浠ョ敤鏂囨湰緙栬緫鍣ㄥ療鐪?
-E
銆銆鍙縺媧婚澶勭悊,榪欎釜涓嶇敓鎴愭枃浠?浣犻渶瑕佹妸瀹冮噸瀹氬悜鍒頒竴涓緭鍑烘枃浠墮噷闈?
銆銆渚嬪瓙鐢ㄦ硶:
銆銆gcc -E hello.c > pianoapan.txt
銆銆gcc -E hello.c | more
銆銆鎱㈡參鐪嬪惂,涓涓猦ello word 涔熻涓庡鐞嗘垚800琛岀殑浠g爜
-o
銆銆鍒跺畾鐩爣鍚嶇О,緙虹渷鐨勬椂鍊?gcc 緙栬瘧鍑烘潵鐨勬枃浠舵槸a.out,寰堥毦鍚?濡傛灉浣犲拰鎴戞湁鍚屾劅
錛屾敼鎺夊畠,鍝堝搱
銆銆渚嬪瓙鐢ㄦ硶
銆銆gcc -o hello.exe hello.c (鍝?windows鐢ㄤ範鎯簡)
銆銆gcc -o hello.asm -S hello.c
-pipe
銆銆浣跨敤綆¢亾浠f浛緙栬瘧涓復鏃舵枃浠?鍦ㄤ嬌鐢ㄩ潪gnu姹囩紪宸ュ叿鐨勬椂鍊?鍙兘鏈変簺闂
銆銆gcc -pipe -o hello.exe hello.c
-ansi
銆銆鍏抽棴gnu c涓笌ansi c涓嶅吋瀹圭殑鐗規?嬋媧籥nsi c鐨勪笓鏈夌壒鎬?鍖呮嫭紱佹涓浜沘sm inl
ine typeof鍏抽敭瀛?浠ュ強UNIX,vax絳夐澶勭悊瀹?
-fno-asm
銆銆姝ら夐」瀹炵幇ansi閫夐」鐨勫姛鑳界殑涓閮ㄥ垎錛屽畠紱佹灝哸sm,inline鍜宼ypeof鐢ㄤ綔鍏抽敭瀛椼?
銆銆銆銆
-fno-strict-prototype
銆銆鍙g++璧蜂綔鐢?浣跨敤榪欎釜閫夐」,g++灝嗗涓嶅甫鍙傛暟鐨勫嚱鏁?閮借涓烘槸娌℃湁鏄懼紡鐨勫鍙傛暟
鐨勪釜鏁板拰綾誨瀷璇存槑,鑰屼笉鏄病鏈夊弬鏁?
銆銆鑰実cc鏃犺鏄惁浣跨敤榪欎釜鍙傛暟,閮藉皢瀵規病鏈夊甫鍙傛暟鐨勫嚱鏁?璁や負鍩庢病鏈夋樉寮忚鏄庣殑綾誨瀷

銆銆
-fthis-is-varialble
銆銆灝辨槸鍚戜紶緇焎++鐪嬮綈,鍙互浣跨敤this褰撲竴鑸彉閲忎嬌鐢?
銆銆
-fcond-mismatch
銆銆鍏佽鏉′歡琛ㄨ揪寮忕殑絎簩鍜岀涓夊弬鏁扮被鍨嬩笉鍖歸厤,琛ㄨ揪寮忕殑鍊煎皢涓簐oid綾誨瀷
銆銆
-funsigned-char
-fno-signed-char
-fsigned-char
-fno-unsigned-char
銆銆榪欏洓涓弬鏁版槸瀵筩har綾誨瀷榪涜璁劇疆,鍐沖畾灝哻har綾誨瀷璁劇疆鎴恥nsigned char(鍓嶄袱涓弬
鏁?鎴栬?signed char(鍚庝袱涓弬鏁?
銆銆
-include file
銆銆鍖呭惈鏌愪釜浠g爜,綆鍗曟潵璇?灝辨槸渚夸互鏌愪釜鏂囦歡,闇瑕佸彟涓涓枃浠剁殑鏃跺?灝卞彲浠ョ敤瀹冭
瀹?鍔熻兘灝辯浉褰撲簬鍦ㄤ唬鐮佷腑浣跨敤#include<filename>
銆銆渚嬪瓙鐢ㄦ硶:
銆銆gcc hello.c -include /root/pianopan.h
銆銆
-imacros file
銆銆灝唂ile鏂囦歡鐨勫畯,鎵╁睍鍒癵cc/g++鐨勮緭鍏ユ枃浠?瀹忓畾涔夋湰韜茍涓嶅嚭鐜板湪杈撳叆鏂囦歡涓?
銆銆
-Dmacro
銆銆鐩稿綋浜嶤璇█涓殑#define macro
銆銆
-Dmacro=defn
銆銆鐩稿綋浜嶤璇█涓殑#define macro=defn
銆銆
-Umacro
銆銆鐩稿綋浜嶤璇█涓殑#undef macro
-undef
銆銆鍙栨秷瀵逛換浣曢潪鏍囧噯瀹忕殑瀹氫箟
銆銆
-Idir
銆銆鍦ㄤ綘鏄敤#include"file"鐨勬椂鍊?gcc/g++浼氬厛鍦ㄥ綋鍓嶇洰褰曟煡鎵句綘鎵鍒跺畾鐨勫ご鏂囦歡,濡?
鏋滄病鏈夋壘鍒?浠栧洖鍒扮己鐪佺殑澶存枃浠剁洰褰曟壘,濡傛灉浣跨敤-I鍒跺畾浜嗙洰褰?浠?
銆銆鍥炲厛鍦ㄤ綘鎵鍒跺畾鐨勭洰褰曟煡鎵?鐒跺悗鍐嶆寜甯歌鐨勯『搴忓幓鎵?
銆銆瀵逛簬#include<file>,gcc/g++浼氬埌-I鍒跺畾鐨勭洰褰曟煡鎵?鏌ユ壘涓嶅埌,鐒跺悗灝嗗埌緋葷粺鐨勭己
鐪佺殑澶存枃浠剁洰褰曟煡鎵?
銆銆
-I-
銆銆灝辨槸鍙栨秷鍓嶄竴涓弬鏁扮殑鍔熻兘,鎵浠ヤ竴鑸湪-Idir涔嬪悗浣跨敤
銆銆
-idirafter dir
銆銆鍦?I鐨勭洰褰曢噷闈㈡煡鎵懼け璐?璁插埌榪欎釜鐩綍閲岄潰鏌ユ壘.
銆銆
-iprefix prefix
-iwithprefix dir
銆銆涓鑸竴璧蜂嬌鐢?褰?I鐨勭洰褰曟煡鎵懼け璐?浼氬埌prefix+dir涓嬫煡鎵?
銆銆
-nostdinc
銆銆浣跨紪璇戝櫒涓嶅啀緋葷粺緙虹渷鐨勫ご鏂囦歡鐩綍閲岄潰鎵懼ご鏂囦歡,涓鑸拰-I鑱斿悎浣跨敤,鏄庣‘闄愬畾澶?
鏂囦歡鐨勪綅緗?
銆銆
-nostdin C++
銆銆瑙勫畾涓嶅湪g++鎸囧畾鐨勬爣鍑嗚礬緇忎腑鎼滅儲,浣嗕粛鍦ㄥ叾浠栬礬寰勪腑鎼滅儲,.姝ら夐」鍦ㄥ垱libg++搴?
浣跨敤
銆銆
-C
銆銆鍦ㄩ澶勭悊鐨勬椂鍊?涓嶅垹闄ゆ敞閲婁俊鎭?涓鑸拰-E浣跨敤,鏈夋椂鍊欏垎鏋愮▼搴忥紝鐢ㄨ繖涓緢鏂逛究鐨?

銆銆
-M
銆銆鐢熸垚鏂囦歡鍏寵仈鐨勪俊鎭傚寘鍚洰鏍囨枃浠舵墍渚濊禆鐨勬墍鏈夋簮浠g爜浣犲彲浠ョ敤gcc -M hello.c
鏉ユ祴璇曚竴涓嬶紝寰堢畝鍗曘?
銆銆
-MM
銆銆鍜屼笂闈㈢殑閭d釜涓鏍鳳紝浣嗘槸瀹冨皢蹇界暐鐢?include<file>閫犳垚鐨勪緷璧栧叧緋匯?
銆銆
-MD
銆銆鍜?M鐩稿悓錛屼絾鏄緭鍑哄皢瀵煎叆鍒?d鐨勬枃浠墮噷闈?
銆銆
-MMD
銆銆鍜?MM鐩稿悓錛屼絾鏄緭鍑哄皢瀵煎叆鍒?d鐨勬枃浠墮噷闈?
銆銆
-Wa,option
銆銆姝ら夐」浼犻抩ption緇欐眹緙栫▼搴?濡傛灉option涓棿鏈夐楀彿,灝卞皢option鍒嗘垚澶氫釜閫夐」,鐒?
鍚庝紶閫掔粰浼氭眹緙栫▼搴?
銆銆
-Wl.option
銆銆姝ら夐」浼犻抩ption緇欒繛鎺ョ▼搴?濡傛灉option涓棿鏈夐楀彿,灝卞皢option鍒嗘垚澶氫釜閫夐」,鐒?
鍚庝紶閫掔粰浼氳繛鎺ョ▼搴?
銆銆
-llibrary
銆銆鍒跺畾緙栬瘧鐨勬椂鍊欎嬌鐢ㄧ殑搴?
銆銆渚嬪瓙鐢ㄦ硶
銆銆gcc -lcurses hello.c
銆銆浣跨敤ncurses搴撶紪璇戠▼搴?
銆銆
-Ldir
銆銆鍒跺畾緙栬瘧鐨勬椂鍊欙紝鎼滅儲搴撶殑璺緞銆傛瘮濡備綘鑷繁鐨勫簱錛屽彲浠ョ敤瀹冨埗瀹氱洰褰曪紝涓嶇劧
銆銆緙栬瘧鍣ㄥ皢鍙湪鏍囧噯搴撶殑鐩綍鎵俱傝繖涓猟ir灝辨槸鐩綍鐨勫悕縐般?
銆銆
-O0
-O1
-O2
-O3
銆銆緙栬瘧鍣ㄧ殑浼樺寲閫夐」鐨?涓駭鍒紝-O0琛ㄧず娌℃湁浼樺寲,-O1涓虹己鐪佸鹼紝-O3浼樺寲綰у埆鏈楂樸
銆 銆銆
-g
銆銆鍙槸緙栬瘧鍣紝鍦ㄧ紪璇戠殑鏃跺欙紝浜х敓璋冭瘯淇℃伅銆?
銆銆
-gstabs
銆銆姝ら夐」浠tabs鏍煎紡澹扮О璋冭瘯淇℃伅,浣嗘槸涓嶅寘鎷琯db璋冭瘯淇℃伅.
銆銆
-gstabs+
銆銆姝ら夐」浠tabs鏍煎紡澹扮О璋冭瘯淇℃伅,騫朵笖鍖呭惈浠呬緵gdb浣跨敤鐨勯澶栬皟璇曚俊鎭?
銆銆
-ggdb
銆銆姝ら夐」灝嗗敖鍙兘鐨勭敓鎴恎db鐨勫彲浠ヤ嬌鐢ㄧ殑璋冭瘯淇℃伅.
-static
銆銆姝ら夐」灝嗙姝嬌鐢ㄥ姩鎬佸簱錛屾墍浠ワ紝緙栬瘧鍑烘潵鐨勪笢瑗匡紝涓鑸兘寰堝ぇ錛屼篃涓嶉渶瑕佷粈涔?
鍔ㄦ佽繛鎺ュ簱錛屽氨鍙互榪愯.
-share
銆銆姝ら夐」灝嗗敖閲忎嬌鐢ㄥ姩鎬佸簱錛屾墍浠ョ敓鎴愭枃浠舵瘮杈冨皬錛屼絾鏄渶瑕佺郴緇熺敱鍔ㄦ佸簱.
-traditional
銆銆璇曞浘璁╃紪璇戝櫒鏀寔浼犵粺鐨凜璇█鐗規?
[鍙傝冭祫鏂橾
-Linux/UNIX楂樼駭緙栫▼
銆銆涓綰㈡棗杞歡鎶鏈湁闄愬叕鍙哥紪钁?娓呭崕澶у鍑虹増紺懼嚭鐗?
-Gcc man page
銆銆
[ChangeLog]
-2002-08-10
銆銆ver 0.1 鍙戝竷鏈鍒濈殑鏂囨。
-2002-08-11
銆銆ver 0.11 淇敼鏂囨。鏍煎紡
-2002-08-12
銆銆ver 0.12 鍔犲叆浜嗗闈欐佸簱錛屽姩鎬佸簱鐨勫弬鏁?
-2002-08-16
銆銆ver 0.16 澧炲姞浜唃cc緙栬瘧鐨?涓樁孌電殑鍛戒護
榪愯 gcc/egcs
**********榪愯 gcc/egcs***********************
銆銆GCC 鏄?GNU 鐨?C 鍜?C++ 緙栬瘧鍣ㄣ傚疄闄呬笂錛孏CC 鑳藉緙栬瘧涓夌璇█錛欳銆丆++ 鍜?O
bject C錛圕 璇█鐨勪竴縐嶉潰鍚戝璞℃墿灞曪級銆傚埄鐢?gcc 鍛戒護鍙悓鏃剁紪璇戝茍榪炴帴 C 鍜?C++
婧愮▼搴忋?
銆銆濡傛灉浣犳湁涓や釜鎴栧皯鏁板嚑涓?C 婧愭枃浠訛紝涔熷彲浠ユ柟渚垮湴鍒╃敤 GCC 緙栬瘧銆佽繛鎺ュ茍鐢熸垚鍙?
鎵ц鏂囦歡銆備緥濡傦紝鍋囪浣犳湁涓や釜婧愭枃浠?main.c 鍜?factorial.c 涓や釜婧愭枃浠訛紝鐜板湪瑕佺紪
璇戠敓鎴愪竴涓綆楅樁涔樼殑紼嬪簭銆?
浠g爜:
-----------------------
娓呭崟 factorial.c
-----------------------
int factorial (int n)
{
銆銆if (n <= 1)
銆銆銆return 1;
銆銆else
銆銆銆return factorial (n - 1) * n;
}
-----------------------
娓呭崟 main.c
-----------------------
#include銆<stdio.h>
#include銆<unistd.h>
int factorial (int n);
int main (int argc, char **argv)
{
銆銆int n;
銆銆if (argc < 2)
銆銆{
銆銆銆銆printf ("Usage: %s n\n", argv [0]);
銆銆銆銆return -1;
銆銆}
銆銆else
銆銆{
銆銆銆n = atoi (argv[1]);
銆銆銆printf ("Factorial of %d is %d.\n", n, factorial (n));
銆銆 }
銆銆return 0;
}
-----------------------
鍒╃敤濡備笅鐨勫懡浠ゅ彲緙栬瘧鐢熸垚鍙墽琛屾枃浠訛紝騫舵墽琛岀▼搴忥細
$ gcc -o factorial main.c factorial.c
$ ./factorial 5
Factorial of 5 is 120.
銆銆GCC 鍙悓鏃剁敤鏉ョ紪璇?C 紼嬪簭鍜?C++ 紼嬪簭銆備竴鑸潵璇達紝C 緙栬瘧鍣ㄩ氳繃婧愭枃浠剁殑鍚庣紑
鍚嶆潵鍒ゆ柇鏄?C 紼嬪簭榪樻槸 C++ 紼嬪簭銆傚湪 Linux 涓紝C 婧愭枃浠剁殑鍚庣紑鍚嶄負 .c錛岃?C++ 婧?
鏂囦歡鐨勫悗緙鍚嶄負 .C 鎴?.cpp銆備絾鏄紝gcc 鍛戒護鍙兘緙栬瘧 C++ 婧愭枃浠訛紝鑰屼笉鑳借嚜鍔ㄥ拰 C
++ 紼嬪簭浣跨敤鐨勫簱榪炴帴銆傚洜姝わ紝閫氬父浣跨敤 g++ 鍛戒護鏉ュ畬鎴?C++ 紼嬪簭鐨勭紪璇戝拰榪炴帴錛岃紼?
搴忎細鑷姩璋冪敤 gcc 瀹炵幇緙栬瘧銆傚亣璁炬垜浠湁涓涓涓嬬殑 C++ 婧愭枃浠訛紙hello.C錛夛細
#include <iostream>
void main (void)
{
銆銆cout << "Hello, world!" << endl;
}
鍒欏彲浠ュ涓嬭皟鐢?g++ 鍛戒護緙栬瘧銆佽繛鎺ュ茍鐢熸垚鍙墽琛屾枃浠訛細
$ g++ -o hello hello.C
$ ./hello
Hello, world!
**********************gcc/egcs 鐨勪富瑕侀夐」*********
gcc 鍛戒護鐨勫父鐢ㄩ夐」
閫夐」 瑙i噴
-ansi 鍙敮鎸?ANSI 鏍囧噯鐨?C 璇硶銆傝繖涓閫夐」灝嗙姝?GNU C 鐨勬煇浜涚壒鑹詫紝
渚嬪 asm 鎴?typeof 鍏抽敭璇嶃?
-c 鍙紪璇戝茍鐢熸垚鐩爣鏂囦歡銆?
-DMACRO 浠ュ瓧絎︿覆鈥?鈥濆畾涔?MACRO 瀹忋?
-DMACRO=DEFN 浠ュ瓧絎︿覆鈥淒EFN鈥濆畾涔?MACRO 瀹忋?
-E 鍙繍琛?C 棰勭紪璇戝櫒銆?
-g 鐢熸垚璋冭瘯淇℃伅銆侴NU 璋冭瘯鍣ㄥ彲鍒╃敤璇ヤ俊鎭?
-IDIRECTORY 鎸囧畾棰濆鐨勫ご鏂囦歡鎼滅儲璺緞DIRECTORY銆?
-LDIRECTORY 鎸囧畾棰濆鐨勫嚱鏁板簱鎼滅儲璺緞DIRECTORY銆?
-lLIBRARY 榪炴帴鏃舵悳绱㈡寚瀹氱殑鍑芥暟搴揕IBRARY銆?
-m486 閽堝 486 榪涜浠g爜浼樺寲銆?
-o FILE 鐢熸垚鎸囧畾鐨勮緭鍑烘枃浠躲傜敤鍦ㄧ敓鎴愬彲鎵ц鏂囦歡鏃躲?
-O0 涓嶈繘琛屼紭鍖栧鐞嗐?
-O 鎴?-O1 浼樺寲鐢熸垚浠g爜銆?
-O2 榪涗竴姝ヤ紭鍖栥?
-O3 姣?-O2 鏇磋繘涓姝ヤ紭鍖栵紝鍖呮嫭 inline 鍑芥暟銆?
-shared 鐢熸垚鍏變韓鐩爣鏂囦歡銆傞氬父鐢ㄥ湪寤虹珛鍏變韓搴撴椂銆?
-static 紱佹浣跨敤鍏變韓榪炴帴銆?
-UMACRO 鍙栨秷瀵?MACRO 瀹忕殑瀹氫箟銆?
-w 涓嶇敓鎴愪換浣曡鍛婁俊鎭?
-Wall 鐢熸垚鎵鏈夎鍛婁俊鎭?

鍛沖叏姣忔棩C++ 2005-11-30 13:36 鍙戣〃璇勮
]]>
Window+GCC+CDT鐢‥clipse寮鍙慍銆丆++http://m.shnenglu.com/SEMAN/archive/2005/11/30/1439.html鍛沖叏姣忔棩C++鍛沖叏姣忔棩C++Wed, 30 Nov 2005 04:57:00 GMThttp://m.shnenglu.com/SEMAN/archive/2005/11/30/1439.htmlhttp://m.shnenglu.com/SEMAN/comments/1439.htmlhttp://m.shnenglu.com/SEMAN/archive/2005/11/30/1439.html#Feedback0http://m.shnenglu.com/SEMAN/comments/commentRss/1439.htmlhttp://m.shnenglu.com/SEMAN/services/trackbacks/1439.html
Author錛歴ungo
(TW@Javaworld)  鏂囩珷鍘熸枃錛?A >http://www.javaworld.com.tw/jute/post/view?bid=10&id=53262&sty=1&tpg=1&age=0

Eclipse闄や簡鍙互闁嬬櫦Java涔嬪錛岄倓鏀彺浜嗚ū澶氳獮璦錛岀従鍦ㄥ厛浠嬬垂
C銆丆++鐨勯枊鐧肩挵澧冭ō瀹氾紝浠ュ緦鏈夋鏈冨啀浠嬬垂鍏跺畠鐨勩侲njoy it錛?

OS錛歐indows XP Professional SP1
浣跨敤鐗堟湰錛欵clipse 2.1.2

涓.棣栧厛瑕佷笅杓塁DT錛孍clipse 2.1.2浣跨敤鑰咃紝璜嬩笅杓夐欓爡錛?
CDT 1.2 Full for Windows R2.1.1 1.2.0 GA - Full - Windows銆?
Eclipse 2.1.3浣跨敤鑰呰珛涓嬭級錛欳DT 1.2.1銆?
Eclipse 3.0 M7浣跨敤鑰呰珛涓嬭級錛欳DT 2.0 M7銆?
Eclipse 3.0 M8浣跨敤鑰呰珛涓嬭級錛欳DT 2.0 M8銆?
Eclipse 3.0 M9浣跨敤鑰呰珛涓嬭級錛欳DT 2.0 M9銆?
涓嬭級綞插潃錛?/FONT>http://www.eclipse.org/cdt/

瀹夎錛氬皣瑙e綹緦鐨刦eatures銆乸lugins鏁村嬭硣鏂欏ぞ瑜囪=鍒癊clipse瀹夎璩囨枡
瑁★紝閲嶆柊闁嬪暉Eclipse鍗沖彲銆?

浜?涓嬭級鍙湪Windows涓婁嬌鐢ㄧ殑GNU C銆丆++綬ㄨ鍣紝閫欒!瑕佷笅杓夌殑鏄細MinGW銆?
Download闋侀潰寰堥暦鐨勪竴涓詫紝璜嬮伕鎿囬欏嬬増鏈細
MinGW bin MinGW-3.1.0-1.exe 14863 kb Sep 15, 2003 11:14
涓嬭級綞插潃錛?/FONT>http://www.mingw.org/download.shtml

瀹夎錛氬畨瑁濈洰閷勯伕C妲斤紝鐒跺緦鐙傞粸涓嬩竴姝?Next)灝辮浜嗐傚畨瑁濆畬寰岃礬寰戞槸閫?
妯?>C:\MinGW銆?

涓?鍏堝湪Command Line妯″紡涓嬫脯瑭︾法璀垏鍩瘋銆傚厛灝嘋:\MinGW\bin搴曚笅鐨?
mingw32-make.exe鏇村悕鐐簃ake.exe錛屽洜鐐哄緟鏈冨湪Eclipse浣跨敤鏅傚畠闋愯ō
鏈冩姄緋葷當瑁ake閫欏嬫獢鍚嶈屼笉鏄痬ingw32-make銆?

(璦伙細濡傛灉涓嶆洿鍚嶆垨鏄倓鏈夊叾浠杕ake紼嬪紡鏅傦紝涔熷彲浠ュ湪紼嶅緦鐨凟clipse璦畾
涓紝鍦╩ake targets view鐨勫湴鏂癸紝鏂板涓鍊媡ask鏅傦紝build command 鍙栨秷
use default , 浣跨敤 mingw32-make錛屾垨鍦╬roject properties->make project ->
灝噈ake 鏀圭偤 mingw32-make )
-- 鐢?B> snpshu 瑁滃厖銆?/FONT>

鍦ㄧ挵澧冭畩鏁歌!鍔犲叆涓嬪垪璦畾錛?
PATH 錛?C:\MinGW\bin; (濡傛灉緋葷當宸茬稉鏈夎鍏跺畠C/C++綬ㄨ鍣紝璜嬫妸C:\MinGW\bin鍔犲湪鏈鍓嶉潰銆?
LIBRARY_PATH 錛欳:\MinGW\lib
C_INCLUDE_PATH 錛欳:\MinGW\include
CPLUS_INCLUDE_PATH 錛欳:\MinGW\include\c++\3.2.3;C:\MinGW\include\c++\3.2.3\mingw32;
C:\MinGW\include\c++\3.2.3\backward;C:\MinGW\include

鍏堜嬌鐢ㄦ枃瀛楃法杓櫒綬ㄥ娓│鐢ㄧ殑鍘熷妾旓紝妾斿悕錛歮ain.cpp銆?
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
 
int main(void) {
    cout << "Can You Feel My World錛? ;
 
    return 0;
}

鍦–ommand Line涓嬬法璀寚浠わ細
1
C:\g++ main.cpp -O3 -o hello

(O3鐨凮鏄嫳鏂囧ぇ瀵?姝?)
綬ㄨ鎴愬姛寰岋細渚挎渻鐢㈢敓hello.exe鐨勫煼琛屾獢銆?
鍩瘋鐣潰濡備笅錛?
1
2
3
4
5
6
7
8
9
10
Microsoft Windows XP [鐗堟湰 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
 
C:\Documents and Settings\Sungo>cd\
 
C:\>g++ main.cpp -O3 -o hello
 
C:\>hello
Can You Feel My World錛?
C:\>

璦伙細-O3 鏃楁琛ㄧず鎺℃渶楂樼礆綬ㄨ鏈浣沖寲錛岀法璀熷害鏈鎱紝浣嗙敘鐢熺殑鍩瘋妾?
妾旀鏈冩渶灝忥紝鍩瘋閫熷害鏈冩渶蹇紱-o 鏃楁琛ㄧず灝囩法璀畬鐨?.exe閲嶆柊鏇村悕銆?

鈼庢椹熶竴.闁嬪暉Eclipse寰岋紝棣栧厛鍏堥枊鍟烠/C++灝堢敤瑕栨櫙銆?
Windows->Open Perspective->C/C++ Development

鈼庢椹熶簩.寤虹珛涓鍊婥++鐢ㄧ殑灝堟銆?
File-New->Project->C++->Standard Make C++ Project
(鎺ヤ笅渚嗙殑姝ラ璺熷緩绔嬩竴鑸殑Java灝堟涓妯o紝鐨嗘帯闋愯ō鍗沖彲)

鈼庢椹熶笁.鎶婃垜鍊戝墰鍓涘鐨刴ain.cpp import閫蹭締錛屽姞鍒板皥妗堣!銆?
File->Import->File System->鐎忚C:\main.cpp

鈼庢椹熷洓.寤虹珛涓鍊媘akefile銆?
File->New->File錛屾獢妗堝悕紼卞~錛歮akefile銆?涓嶉渶鎵撳壇妾斿悕)

makefile鍏у濡備笅錛?
1
2
all:
    g++  main.cpp -g -o run

娉ㄦ剰錛歮akefile綹帓瑕佷互Tab閸典綔綹帓錛屼笉鑳戒互絀烘牸4浣滅府鎺掞紝
鍚﹀墖Build鏈冩湁鍟忛銆?/FONT>

鈼庢椹熶簲.璦畾Make Targets銆?
Windows-Show View->Make Targets
鍦∕ake Targets瑕栫獥瑁℃寜婊戦紶鍙抽嵉錛孉dd Build Target
錛宯ame鎵擄細綬ㄨ銆侭uild Target鎵擄細all銆?

鈼庢椹熷叚.綬ㄨ銆?
鍦ㄥ墰鍓涘緩绔嬬殑Make Targets "綬ㄨ" 涓婇粸婊戦紶2涓嬶紝鍗蟲渻闁嬪綬ㄨ錛?
姝ゆ檪鎴戝戝彲浠ョ櫦鐝緃ello.exe宸茬稉鐢㈢敓鍦ㄦ垜鍊戝皥妗堜笅浜嗐傚彲鍦ㄥ簳涓?
C-Build瑕栫獥鐪嬪埌浠ヤ笅杓稿嚭緄愭灉錛?
1
2
make -k all 
g++  main.cpp -g -o run


鈼庢椹熶竷. *.exe鍩瘋鍓嶈ō瀹氥傚洜鐐哄湪Windows涓婻un錛屾墍浠ヨ鍏堜綔鍊嬭ō瀹?
錛岃珛闁嬪暉Project->Properties->C/C++ Make Project->Binary Parser闋侀潰銆?
Binary Parser涓嬫媺寮忛伕鍠紝灝嘐LF Parser鏀規垚PE Windows Parser銆?

鈼庢椹熷叓.鍩瘋銆?
Run->Run as->C Local Application銆?
鍦ㄥ簳涓婥onsloe瑕栫獥鐪嬪埌hello.exe鐨勫煼琛岀祼鏋溿?

璦伙細鐣跺師濮嬫獢鏈変慨鏀癸紝瑕侀噸鏂扮法璀檪錛屽彧瑕佹粦榧犻洐鎿婃垜鍊戝湪姝ラ浜?
鎵寤虹珛鐨凪ake Targets "綬ㄨ"錛屽嵆鍙疪ebuilding銆?



]]>
宓屽叆寮忓紑鍙?C璇█闈㈣瘯棰?/title><link>http://m.shnenglu.com/SEMAN/archive/2005/11/23/1270.html</link><dc:creator>鍛沖叏姣忔棩C++</dc:creator><author>鍛沖叏姣忔棩C++</author><pubDate>Wed, 23 Nov 2005 12:25:00 GMT</pubDate><guid>http://m.shnenglu.com/SEMAN/archive/2005/11/23/1270.html</guid><wfw:comment>http://m.shnenglu.com/SEMAN/comments/1270.html</wfw:comment><comments>http://m.shnenglu.com/SEMAN/archive/2005/11/23/1270.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.shnenglu.com/SEMAN/comments/commentRss/1270.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/SEMAN/services/trackbacks/1270.html</trackback:ping><description><![CDATA[<P><FONT size=2>棰勫鐞嗗櫒錛圥reprocessor錛?BR><BR><BR>1. 鐢ㄩ澶勭悊鎸囦護#define 澹版槑涓涓父鏁幫紝鐢ㄤ互琛ㄦ槑1騫翠腑鏈夊灝戠錛堝拷鐣ラ棸騫撮棶棰橈級<BR><BR>#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL <BR>鎴戝湪榪欐兂鐪嬪埌鍑犱歡浜嬫儏錛?<BR>1). #define 璇硶鐨勫熀鏈煡璇嗭紙渚嬪錛氫笉鑳戒互鍒嗗彿緇撴潫錛屾嫭鍙風殑浣跨敤錛岀瓑絳夛級 <BR>2). 鎳傚緱棰勫鐞嗗櫒灝嗕負浣犺綆楀父鏁拌〃杈懼紡鐨勫鹼紝鍥犳錛岀洿鎺ュ啓鍑轟綘鏄浣曡綆椾竴騫翠腑鏈夊灝戠鑰屼笉鏄綆楀嚭瀹為檯鐨勫鹼紝鏄洿娓呮櫚鑰屾病鏈変唬浠風殑銆?<BR>3). 鎰忚瘑鍒拌繖涓〃杈懼紡灝嗕嬌涓涓?6浣嶆満鐨勬暣鍨嬫暟婧㈠嚭-鍥犳瑕佺敤鍒伴暱鏁村瀷絎﹀彿L,鍛婅瘔緙栬瘧鍣ㄨ繖涓父鏁版槸鐨勯暱鏁村瀷鏁般?<BR>4). 濡傛灉浣犲湪浣犵殑琛ㄨ揪寮忎腑鐢ㄥ埌UL錛堣〃紺烘棤絎﹀彿闀挎暣鍨嬶級錛岄偅涔堜綘鏈変簡涓涓ソ鐨勮搗鐐廣傝浣忥紝絎竴鍗拌薄寰堥噸瑕併?BR><BR><BR>2. 鍐欎竴涓滄爣鍑嗏濆畯MIN錛岃繖涓畯杈撳叆涓や釜鍙傛暟騫惰繑鍥炶緝灝忕殑涓涓?BR></FONT></P> <P><FONT size=2>#define MIN(A,B) ((A) <= (B) (A) : (B)) <BR>榪欎釜嫻嬭瘯鏄負涓嬮潰鐨勭洰鐨勮岃鐨勶細 <BR>1). 鏍囪瘑#define鍦ㄥ畯涓簲鐢ㄧ殑鍩烘湰鐭ヨ瘑銆傝繖鏄緢閲嶈鐨勶紝鍥犱負鐩村埌宓屽叆(inline)鎿嶄綔絎﹀彉涓烘爣鍑咰鐨勪竴閮ㄥ垎錛屽畯鏄柟渚夸駭鐢熷祵鍏ヤ唬鐮佺殑鍞竴鏂規硶錛屽浜庡祵鍏ュ紡緋葷粺鏉ヨ錛屼負浜嗚兘杈懼埌瑕佹眰鐨勬ц兘錛屽祵鍏ヤ唬鐮佺粡甯告槸蹇呴』鐨勬柟娉曘?<BR>2). 涓夐噸鏉′歡鎿嶄綔絎︾殑鐭ヨ瘑銆傝繖涓搷浣滅瀛樺湪C璇█涓殑鍘熷洜鏄畠浣垮緱緙栬瘧鍣ㄨ兘浜х敓姣攊f-then-else鏇翠紭鍖栫殑浠g爜錛屼簡瑙h繖涓敤娉曟槸寰堥噸瑕佺殑銆?<BR>3). 鎳傚緱鍦ㄥ畯涓皬蹇冨湴鎶婂弬鏁扮敤鎷彿鎷搗鏉?<BR>4). 鎴戜篃鐢ㄨ繖涓棶棰樺紑濮嬭璁哄畯鐨勫壇浣滅敤錛屼緥濡傦細褰撲綘鍐欎笅闈㈢殑浠g爜鏃朵細鍙戠敓浠涔堜簨錛?<BR>least = MIN(*p++, b);<BR><BR><BR>3. 棰勫鐞嗗櫒鏍囪瘑#error鐨勭洰鐨勬槸浠涔堬紵<BR><BR>濡傛灉浣犱笉鐭ラ亾絳旀錛岃鐪嬪弬鑰冩枃鐚?銆傝繖闂瀵瑰尯鍒嗕竴涓甯哥殑浼欒鍜屼竴涓功鍛嗗瓙鏄緢鏈夌敤鐨勩傚彧鏈変功鍛嗗瓙鎵嶄細璇籆璇█璇炬湰鐨勯檮褰曞幓鎵懼嚭璞¤繖縐?<BR>闂鐨勭瓟妗堛傚綋鐒跺鏋滀綘涓嶆槸鍦ㄦ壘涓涓功鍛嗗瓙錛岄偅涔堝簲璇曡呮渶濂藉笇鏈涜嚜宸變笉瑕佺煡閬撶瓟妗堛?BR><BR><BR>姝誨驚鐜紙Infinite loops錛?BR><BR><BR>4. 宓屽叆寮忕郴緇熶腑緇忓父瑕佺敤鍒版棤闄愬驚鐜紝浣犳庝箞鏍風敤C緙栧啓姝誨驚鐜憿錛?BR><BR>榪欎釜闂鐢ㄥ嚑涓В鍐蟲柟妗堛傛垜棣栭夌殑鏂規鏄細 <BR>while(1) { } <BR>涓浜涚▼搴忓憳鏇村枩嬈㈠涓嬫柟妗堬細 <BR>for(;;) { } <BR>榪欎釜瀹炵幇鏂瑰紡璁╂垜涓洪毦錛屽洜涓鴻繖涓娉曟病鏈夌‘鍒囪〃杈懼埌搴曟庝箞鍥炰簨銆傚鏋滀竴涓簲璇曡呯粰鍑鴻繖涓綔涓烘柟妗堬紝鎴戝皢鐢ㄨ繖涓綔涓轟竴涓満浼氬幓鎺㈢┒浠栦滑榪欐牱鍋氱殑 <BR>鍩烘湰鍘熺悊銆傚鏋滀粬浠殑鍩烘湰絳旀鏄細鈥滄垜琚暀鐫榪欐牱鍋氾紝浣嗕粠娌℃湁鎯沖埌榪囦負浠涔堛傗濊繖浼氱粰鎴戠暀涓嬩竴涓潖鍗拌薄銆?<BR>絎笁涓柟妗堟槸鐢?goto <BR>Loop: <BR>... <BR>goto Loop; <BR>搴旇瘯鑰呭緇欏嚭涓婇潰鐨勬柟妗堬紝榪欒鏄庢垨鑰呬粬鏄竴涓眹緙栬璦紼嬪簭鍛橈紙榪欎篃璁告槸濂戒簨錛夋垨鑰呬粬鏄竴涓兂榪涘叆鏂伴鍩熺殑BASIC/FORTRAN紼嬪簭鍛樸?BR><BR>鏁版嵁澹版槑錛圖ata declarations錛?<BR><BR>5. 鐢ㄥ彉閲廰緇欏嚭涓嬮潰鐨勫畾涔?<BR>a) 涓涓暣鍨嬫暟錛圓n integer錛?<BR>b) 涓涓寚鍚戞暣鍨嬫暟鐨勬寚閽堬紙A pointer to an integer錛?<BR>c) 涓涓寚鍚戞寚閽堢殑鐨勬寚閽堬紝瀹冩寚鍚戠殑鎸囬拡鏄寚鍚戜竴涓暣鍨嬫暟錛圓 pointer to a pointer to an integer錛?<BR>d) 涓涓湁10涓暣鍨嬫暟鐨勬暟緇勶紙An array of 10 integers錛?<BR>e) 涓涓湁10涓寚閽堢殑鏁扮粍錛岃鎸囬拡鏄寚鍚戜竴涓暣鍨嬫暟鐨勶紙An array of 10 pointers to integers錛?<BR>f) 涓涓寚鍚戞湁10涓暣鍨嬫暟鏁扮粍鐨勬寚閽堬紙A pointer to an array of 10 integers錛?<BR>g) 涓涓寚鍚戝嚱鏁扮殑鎸囬拡錛岃鍑芥暟鏈変竴涓暣鍨嬪弬鏁板茍榪斿洖涓涓暣鍨嬫暟錛圓 pointer to a function that takes an integer as an argument and returns an integer錛?<BR>h) 涓涓湁10涓寚閽堢殑鏁扮粍錛岃鎸囬拡鎸囧悜涓涓嚱鏁幫紝璇ュ嚱鏁版湁涓涓暣鍨嬪弬鏁板茍榪斿洖涓涓暣鍨嬫暟錛?An array of ten pointers to functions that take an integer argument and return an integer 錛?BR><BR>絳旀鏄細 <BR>a) int a; // An integer <BR>b) int *a; // A pointer to an integer <BR>c) int **a; // A pointer to a pointer to an integer <BR>d) int a[10]; // An array of 10 integers <BR>e) int *a[10]; // An array of 10 pointers to integers <BR>f) int (*a)[10]; // A pointer to an array of 10 integers <BR>g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer <BR>h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer <BR><BR><BR>浜轟滑緇忓父澹扮О榪欓噷鏈夊嚑涓棶棰樻槸閭g瑕佺炕涓涓嬩功鎵嶈兘鍥炵瓟鐨勯棶棰橈紝鎴戝悓鎰忚繖縐嶈娉曘傚綋鎴戝啓榪欑瘒鏂囩珷鏃訛紝涓轟簡紜畾璇硶鐨勬紜э紝鎴戠殑紜煡浜嗕竴涓嬩功銆?<BR>浣嗘槸褰撴垜琚潰璇曠殑鏃跺欙紝鎴戞湡鏈涜闂埌榪欎釜闂錛堟垨鑰呯浉榪戠殑闂錛夈傚洜涓哄湪琚潰璇曠殑榪欐鏃墮棿閲岋紝鎴戠‘瀹氭垜鐭ラ亾榪欎釜闂鐨勭瓟妗堛傚簲璇曡呭鏋滀笉鐭ラ亾 <BR>鎵鏈夌殑絳旀錛堟垨鑷沖皯澶ч儴鍒嗙瓟妗堬級錛岄偅涔堜篃灝辨病鏈変負榪欐闈㈣瘯鍋氬噯澶囷紝濡傛灉璇ラ潰璇曡呮病鏈変負榪欐闈㈣瘯鍋氬噯澶囷紝閭d箞浠栧張鑳戒負浠涔堝嚭鍑嗗鍛紵<BR><BR><BR>Static<BR><BR>6. 鍏抽敭瀛梥tatic鐨勪綔鐢ㄦ槸浠涔堬紵<BR><BR>榪欎釜綆鍗曠殑闂寰堝皯鏈変漢鑳藉洖絳斿畬鍏ㄣ傚湪C璇█涓紝鍏抽敭瀛梥tatic鏈変笁涓槑鏄劇殑浣滅敤錛?<BR>1). 鍦ㄥ嚱鏁頒綋錛屼竴涓澹版槑涓洪潤鎬佺殑鍙橀噺鍦ㄨ繖涓鍑芥暟琚皟鐢ㄨ繃紼嬩腑緇存寔鍏跺間笉鍙樸?<BR>2). 鍦ㄦā鍧楀唴錛堜絾鍦ㄥ嚱鏁頒綋澶栵級錛屼竴涓澹版槑涓洪潤鎬佺殑鍙橀噺鍙互琚ā鍧楀唴鎵鐢ㄥ嚱鏁拌闂紝浣嗕笉鑳借妯″潡澶栧叾瀹冨嚱鏁拌闂傚畠鏄竴涓湰鍦扮殑鍏ㄥ眬鍙橀噺銆?<BR>3). 鍦ㄦā鍧楀唴錛屼竴涓澹版槑涓洪潤鎬佺殑鍑芥暟鍙彲琚繖涓妯″潡鍐呯殑鍏跺畠鍑芥暟璋冪敤銆傞偅灝辨槸錛岃繖涓嚱鏁拌闄愬埗鍦ㄥ0鏄庡畠鐨勬ā鍧楃殑鏈湴鑼冨洿鍐呬嬌鐢ㄣ?<BR>澶у鏁板簲璇曡呰兘姝g‘鍥炵瓟絎竴閮ㄥ垎錛屼竴閮ㄥ垎鑳芥紜洖絳旂浜岄儴鍒嗭紝鍚屾槸寰堝皯鐨勪漢鑳芥噦寰楃涓夐儴鍒嗐傝繖鏄竴涓簲璇曡呯殑涓ラ噸鐨勭己鐐癸紝鍥犱負浠栨樉鐒朵笉鎳傚緱鏈湴鍖栨暟鎹拰浠g爜鑼冨洿鐨勫ソ澶勫拰閲嶈鎬с?BR><BR><BR>Const <BR><BR>7錛庡叧閿瓧const鏄粈涔堝惈鎰忥紵 <BR>鎴戝彧瑕佷竴鍚埌琚潰璇曡呰錛氣渃onst鎰忓懗鐫甯告暟鈥濓紝鎴戝氨鐭ラ亾鎴戞鍦ㄥ拰涓涓笟浣欒呮墦浜ら亾銆傚幓騫碊an Saks宸茬粡鍦ㄤ粬鐨勬枃绔犻噷瀹屽叏姒傛嫭浜哻onst鐨勬墍鏈夌敤娉曪紝鍥犳ESP(璇戣咃細Embedded Systems Programming)鐨勬瘡涓浣嶈鑰呭簲璇ラ潪甯哥啛鎮塩onst鑳藉仛浠涔堝拰涓嶈兘鍋氫粈涔?濡傛灉浣犱粠娌℃湁璇誨埌閭g瘒鏂囩珷錛屽彧瑕佽兘璇村嚭const鎰忓懗鐫鈥滃彧璇燴濆氨鍙互浜嗐傚敖綆¤繖涓瓟妗堜笉鏄畬鍏ㄧ殑絳旀錛屼絾鎴戞帴鍙楀畠浣滀負涓涓紜殑絳旀銆傦紙濡傛灉浣犳兂鐭ラ亾鏇磋緇嗙殑絳旀錛屼粩緇嗚涓涓婼aks鐨勬枃绔犲惂銆傦級濡傛灉搴旇瘯鑰呰兘姝g‘鍥炵瓟榪欎釜闂錛屾垜灝嗛棶浠栦竴涓檮鍔犵殑闂錛氫笅闈㈢殑澹版槑閮芥槸浠涔堟剰鎬濓紵<BR><BR>const int a; <BR>int const a; <BR>const int *a; <BR>int * const a; <BR>int const * a const;<BR><BR>鍓嶄袱涓殑浣滅敤鏄竴鏍鳳紝a鏄竴涓父鏁村瀷鏁般傜涓変釜鎰忓懗鐫a鏄竴涓寚鍚戝父鏁村瀷鏁扮殑鎸囬拡錛堜篃灝辨槸錛屾暣鍨嬫暟鏄笉鍙慨鏀圭殑錛屼絾鎸囬拡鍙互錛夈傜鍥涗釜鎰忔漚鏄竴涓寚鍚戞暣鍨嬫暟鐨勫父鎸囬拡錛堜篃灝辨槸璇達紝鎸囬拡鎸囧悜鐨勬暣鍨嬫暟鏄彲浠ヤ慨鏀圭殑錛屼絾鎸囬拡鏄笉鍙慨鏀圭殑錛夈傛渶鍚庝竴涓剰鍛崇潃a鏄竴涓寚鍚戝父鏁村瀷鏁扮殑甯告寚閽堬紙涔熷氨鏄錛屾寚閽堟寚鍚戠殑鏁村瀷鏁版槸涓嶅彲淇敼鐨勶紝鍚屾椂鎸囬拡涔熸槸涓嶅彲淇敼鐨勶級銆傚鏋滃簲璇曡呰兘姝g‘鍥炵瓟榪欎簺闂錛岄偅涔堜粬灝辯粰鎴戠暀涓嬩簡涓涓ソ鍗拌薄銆傞『甯︽彁涓鍙ワ紝涔熻浣犲彲鑳戒細闂紝鍗充嬌涓嶇敤鍏抽敭瀛梒onst錛屼篃榪樻槸鑳藉緢瀹規槗鍐欏嚭鍔熻兘姝g‘鐨勭▼搴忥紝閭d箞鎴戜負浠涔堣繕瑕佸姝ょ湅閲嶅叧閿瓧const鍛紵鎴戜篃濡備笅鐨勫嚑涓嬬悊鐢憋細 <BR>1). 鍏抽敭瀛梒onst鐨勪綔鐢ㄦ槸涓虹粰璇諱綘浠g爜鐨勪漢浼犺揪闈炲父鏈夌敤鐨勪俊鎭紝瀹為檯涓婏紝澹版槑涓涓弬鏁頒負甯擱噺鏄負浜嗗憡璇変簡鐢ㄦ埛榪欎釜鍙傛暟鐨勫簲鐢ㄧ洰鐨勩傚鏋滀綘鏇捐姳寰堝鏃墮棿娓呯悊鍏跺畠浜虹暀涓嬬殑鍨冨溇錛屼綘灝變細寰堝揩瀛︿細鎰熻阿榪欑偣澶氫綑鐨勪俊鎭傦紙褰撶劧錛屾噦寰楃敤const鐨勭▼搴忓憳寰堝皯浼氱暀涓嬬殑鍨冨溇璁╁埆浜烘潵娓呯悊鐨勩傦級 <BR>2). 閫氳繃緇欎紭鍖栧櫒涓浜涢檮鍔犵殑淇℃伅錛屼嬌鐢ㄥ叧閿瓧const涔熻鑳戒駭鐢熸洿绱у噾鐨勪唬鐮併?<BR>3). 鍚堢悊鍦頒嬌鐢ㄥ叧閿瓧const鍙互浣跨紪璇戝櫒寰堣嚜鐒跺湴淇濇姢閭d簺涓嶅笇鏈涜鏀瑰彉鐨勫弬鏁幫紝闃叉鍏惰鏃犳剰鐨勪唬鐮佷慨鏀廣傜畝鑰岃█涔嬶紝榪欐牱鍙互鍑忓皯bug鐨勫嚭鐜般?BR><BR>Volatile <BR><BR>8. 鍏抽敭瀛梫olatile鏈変粈涔堝惈鎰?騫剁粰鍑轟笁涓笉鍚岀殑渚嬪瓙銆?BR><BR>涓涓畾涔変負volatile鐨勫彉閲忔槸璇磋繖鍙橀噺鍙兘浼氳鎰忔兂涓嶅埌鍦版敼鍙橈紝榪欐牱錛岀紪璇戝櫒灝變笉浼氬幓鍋囪榪欎釜鍙橀噺鐨勫間簡銆傜簿紜湴璇村氨鏄紝浼樺寲鍣ㄥ湪鐢ㄥ埌榪欎釜鍙橀噺鏃跺繀欏繪瘡嬈¢兘灝忓績鍦伴噸鏂拌鍙栬繖涓彉閲忕殑鍊鹼紝鑰屼笉鏄嬌鐢ㄤ繚瀛樺湪瀵勫瓨鍣ㄩ噷鐨勫浠姐備笅闈㈡槸volatile鍙橀噺鐨勫嚑涓緥瀛愶細 <BR>1). 騫惰璁懼鐨勭‖浠跺瘎瀛樺櫒錛堝錛氱姸鎬佸瘎瀛樺櫒錛?<BR>2). 涓涓腑鏂湇鍔″瓙紼嬪簭涓細璁塊棶鍒扮殑闈炶嚜鍔ㄥ彉閲?Non-automatic variables) <BR>3). 澶氱嚎紼嬪簲鐢ㄤ腑琚嚑涓換鍔″叡浜殑鍙橀噺 <BR>鍥炵瓟涓嶅嚭榪欎釜闂鐨勪漢鏄笉浼氳闆囦劍鐨勩傛垜璁や負榪欐槸鍖哄垎C紼嬪簭鍛樺拰宓屽叆寮忕郴緇熺▼搴忓憳鐨勬渶鍩烘湰鐨勯棶棰樸傚祵鍏ュ紡緋葷粺紼嬪簭鍛樼粡甯稿悓紜歡銆佷腑鏂丷TOS絳夌瓑鎵撲氦閬擄紝鎵鐢ㄨ繖浜涢兘瑕佹眰volatile鍙橀噺銆備笉鎳傚緱volatile鍐呭灝嗕細甯︽潵鐏鵑毦銆?<BR>鍋囪琚潰璇曡呮紜湴鍥炵瓟浜嗚繖鏄棶棰橈紙鍡紝鎬鐤戣繖鍚︿細鏄繖鏍鳳級錛屾垜灝嗙◢寰繁絀朵竴涓嬶紝鐪嬩竴涓嬭繖瀹朵紮鏄笉鏄洿姝f噦寰梫olatile瀹屽叏鐨勯噸瑕佹с?<BR>1). 涓涓弬鏁版棦鍙互鏄痗onst榪樺彲浠ユ槸volatile鍚楋紵瑙i噴涓轟粈涔堛?<BR>2). 涓涓寚閽堝彲浠ユ槸volatile 鍚楋紵瑙i噴涓轟粈涔堛?<BR>3). 涓嬮潰鐨勫嚱鏁版湁浠涔堥敊璇細 <BR>int square(volatile int *ptr) <BR>{ <BR>return *ptr * *ptr; <BR>} <BR>涓嬮潰鏄瓟妗堬細 <BR>1). 鏄殑銆備竴涓緥瀛愭槸鍙鐨勭姸鎬佸瘎瀛樺櫒銆傚畠鏄痸olatile鍥犱負瀹冨彲鑳借鎰忔兂涓嶅埌鍦版敼鍙樸傚畠鏄痗onst鍥犱負紼嬪簭涓嶅簲璇ヨ瘯鍥懼幓淇敼瀹冦?<BR>2). 鏄殑銆傚敖綆¤繖騫朵笉寰堝父瑙併備竴涓緥瀛愭槸褰撲竴涓腑鏈嶅姟瀛愮▼搴忎慨璇ヤ竴涓寚鍚戜竴涓猙uffer鐨勬寚閽堟椂銆?<BR>3). 榪欐浠g爜鐨勬湁涓伓浣滃墽銆傝繖孌典唬鐮佺殑鐩殑鏄敤鏉ヨ繑鎸囬拡*ptr鎸囧悜鍊肩殑騫蟲柟錛屼絾鏄紝鐢變簬*ptr鎸囧悜涓涓獀olatile鍨嬪弬鏁幫紝緙栬瘧鍣ㄥ皢浜х敓綾諱技涓嬮潰鐨勪唬鐮侊細 <BR>int square(volatile int *ptr) <BR>{ <BR>int a,b; <BR>a = *ptr; <BR>b = *ptr; <BR>return a * b; <BR>} <BR>鐢變簬*ptr鐨勫煎彲鑳借鎰忔兂涓嶅埌鍦拌鍙橈紝鍥犳a鍜宐鍙兘鏄笉鍚岀殑銆傜粨鏋滐紝榪欐浠g爜鍙兘榪斾笉鏄綘鎵鏈熸湜鐨勫鉤鏂瑰鹼紒姝g‘鐨勪唬鐮佸涓嬶細 <BR>long square(volatile int *ptr) <BR>{ <BR>int a; <BR>a = *ptr; <BR>return a * a; <BR>}<BR><BR>浣嶆搷浣滐紙Bit manipulation錛?BR><BR>9. 宓屽叆寮忕郴緇熸繪槸瑕佺敤鎴峰鍙橀噺鎴栧瘎瀛樺櫒榪涜浣嶆搷浣溿傜粰瀹氫竴涓暣鍨嬪彉閲廰錛屽啓涓ゆ浠g爜錛岀涓涓緗產鐨刡it 3錛岀浜屼釜娓呴櫎a 鐨刡it 3銆傚湪浠ヤ笂涓や釜鎿嶄綔涓紝瑕佷繚鎸佸叾瀹冧綅涓嶅彉銆?BR><BR>瀵硅繖涓棶棰樻湁涓夌鍩烘湰鐨勫弽搴?<BR>1). 涓嶇煡閬撳浣曚笅鎵嬨傝琚潰鑰呬粠娌″仛榪囦換浣曞祵鍏ュ紡緋葷粺鐨勫伐浣溿?<BR>2). 鐢╞it fields銆侭it fields鏄鎵斿埌C璇█姝昏鐨勪笢瑗匡紝瀹冧繚璇佷綘鐨勪唬鐮佸湪涓嶅悓緙栬瘧鍣ㄤ箣闂存槸涓嶅彲縐繪鐨勶紝鍚屾椂涔熶繚璇佷簡鐨勪綘鐨勪唬鐮佹槸涓嶅彲閲嶇敤鐨勩傛垜鏈榪戜笉騫哥湅鍒癐nfineon涓哄叾杈冨鏉傜殑閫氫俊鑺墖鍐欑殑椹卞姩紼嬪簭錛屽畠鐢ㄥ埌浜哹it fields鍥犳瀹屽叏瀵規垜鏃犵敤錛屽洜涓烘垜鐨勭紪璇戝櫒鐢ㄥ叾瀹冪殑鏂瑰紡鏉ュ疄鐜癰it fields鐨勩備粠閬撳痙璁詫細姘歌繙涓嶈璁╀竴涓潪宓屽叆寮忕殑瀹朵紮綺樺疄闄呯‖浠剁殑杈廣?<BR>3). 鐢?#defines 鍜?bit masks 鎿嶄綔銆傝繖鏄竴涓湁鏋侀珮鍙Щ妞嶆х殑鏂規硶錛屾槸搴旇琚敤鍒扮殑鏂規硶銆傛渶浣崇殑瑙e喅鏂規濡備笅錛?<BR>#define BIT3 (0x1<<3) <BR>static int a; <BR>void set_bit3(void) <BR>{ <BR>a |= BIT3; <BR>} <BR>void clear_bit3(void) <BR>{ <BR>a &= ~BIT3; <BR>} <BR>涓浜涗漢鍠滄涓鴻緗拰娓呴櫎鍊艱屽畾涔変竴涓帺鐮佸悓鏃跺畾涔変竴浜涜鏄庡父鏁幫紝榪欎篃鏄彲浠ユ帴鍙楃殑銆傛垜甯屾湜鐪嬪埌鍑犱釜瑕佺偣錛氳鏄庡父鏁般亅=鍜?amp;=~鎿嶄綔銆?BR><BR>璁塊棶鍥哄畾鐨勫唴瀛樹綅緗紙Accessing fixed memory locations錛?<BR><BR>10. 宓屽叆寮忕郴緇熺粡甯稿叿鏈夎姹傜▼搴忓憳鍘昏闂煇鐗瑰畾鐨勫唴瀛樹綅緗殑鐗圭偣銆傚湪鏌愬伐紼嬩腑錛岃姹傝緗竴緇濆鍦板潃涓?x67a9鐨勬暣鍨嬪彉閲忕殑鍊間負0xaa66銆傜紪璇戝櫒鏄竴涓函綺圭殑ANSI緙栬瘧鍣ㄣ傚啓浠g爜鍘誨畬鎴愯繖涓浠誨姟銆?BR><BR>榪欎竴闂嫻嬭瘯浣犳槸鍚︾煡閬撲負浜嗚闂竴緇濆鍦板潃鎶婁竴涓暣鍨嬫暟寮哄埗杞崲錛坱ypecast錛変負涓鎸囬拡鏄悎娉曠殑銆傝繖涓闂鐨勫疄鐜版柟寮忛殢鐫涓漢椋庢牸涓嶅悓鑰屼笉鍚屻傚吀鍨嬬殑綾諱技浠g爜濡備笅錛?<BR>int *ptr; <BR>ptr = (int *)0x67a9; <BR>*ptr = 0xaa55;<BR><BR>涓涓緝鏅︽訂鐨勬柟娉曟槸錛?<BR>*(int * const)(0x67a9) = 0xaa55;<BR><BR>鍗充嬌浣犵殑鍝佸懗鏇存帴榪戠浜岀鏂規錛屼絾鎴戝緩璁綘鍦ㄩ潰璇曟椂浣跨敤絎竴縐嶆柟妗堛?BR><BR>涓柇錛圛nterrupts錛?<BR><BR>11. 涓柇鏄祵鍏ュ紡緋葷粺涓噸瑕佺殑緇勬垚閮ㄥ垎錛岃繖瀵艱嚧浜嗗緢澶氱紪璇戝紑鍙戝晢鎻愪緵涓縐嶆墿灞曗旇鏍囧噯C鏀寔涓柇銆傚叿浠h〃浜嬪疄鏄紝浜х敓浜嗕竴涓柊鐨勫叧閿瓧__interrupt銆備笅闈㈢殑浠g爜灝變嬌鐢ㄤ簡__interrupt鍏抽敭瀛楀幓瀹氫箟浜嗕竴涓腑鏂湇鍔″瓙紼嬪簭(ISR)錛岃璇勮涓涓嬭繖孌典唬鐮佺殑銆?BR><BR>__interrupt double compute_area (double radius) <BR>{ <BR>    double area = PI * radius * radius; <BR>    printf(" Area = %f", area); <BR>    return area; <BR>}<BR><BR>榪欎釜鍑芥暟鏈夊お澶氱殑閿欒浜嗭紝浠ヨ嚦璁╀漢涓嶇煡浠庝綍璇磋搗浜嗭細 <BR>1). ISR 涓嶈兘榪斿洖涓涓箋傚鏋滀綘涓嶆噦榪欎釜錛岄偅涔堜綘涓嶄細琚泧鐢ㄧ殑銆?<BR>2). ISR 涓嶈兘浼犻掑弬鏁般傚鏋滀綘娌℃湁鐪嬪埌榪欎竴鐐癸紝浣犺闆囩敤鐨勬満浼氱瓑鍚岀涓欏廣?<BR>3). 鍦ㄨ澶氱殑澶勭悊鍣?緙栬瘧鍣ㄤ腑錛屾誕鐐逛竴鑸兘鏄笉鍙噸鍏ョ殑銆傛湁浜涘鐞嗗櫒/緙栬瘧鍣ㄩ渶瑕佽棰濆鐨勫瘎瀛樺櫒鍏ユ爤錛屾湁浜涘鐞嗗櫒/緙栬瘧鍣ㄥ氨鏄笉鍏佽鍦↖SR涓仛嫻偣榪愮畻銆傛澶栵紝ISR搴旇鏄煭鑰屾湁鏁堢巼鐨勶紝鍦↖SR涓仛嫻偣榪愮畻鏄笉鏄庢櫤鐨勩?<BR>4). 涓庣涓夌偣涓鑴夌浉鎵匡紝printf()緇忓父鏈夐噸鍏ュ拰鎬ц兘涓婄殑闂銆傚鏋滀綘涓㈡帀浜嗙涓夊拰絎洓鐐癸紝鎴戜笉浼氬お涓洪毦浣犵殑銆備笉鐢ㄨ錛屽鏋滀綘鑳藉緱鍒板悗涓ょ偣錛岄偅涔堜綘鐨勮闆囩敤鍓嶆櫙瓚婃潵瓚婂厜鏄庝簡銆?BR><BR>浠g爜渚嬪瓙錛圕ode examples錛?BR>12 . 涓嬮潰鐨勪唬鐮佽緭鍑烘槸浠涔堬紝涓轟粈涔堬紵<BR><BR>void foo(void) <BR>{ <BR>    unsigned int a = 6; <BR>    int b = -20; <BR>    (a+b > 6) puts("> 6") : puts("<= 6"); <BR>}<BR><BR>榪欎釜闂嫻嬭瘯浣犳槸鍚︽噦寰桟璇█涓殑鏁存暟鑷姩杞崲鍘熷垯錛屾垜鍙戠幇鏈変簺寮鍙戣呮噦寰楁瀬灝戣繖浜涗笢瑗褲備笉綆″浣曪紝榪欐棤絎﹀彿鏁村瀷闂鐨勭瓟妗堟槸杈撳嚭鏄?gt;6鈥濄傚師鍥犳槸褰撹〃杈懼紡涓瓨鍦ㄦ湁絎﹀彿綾誨瀷鍜屾棤絎﹀彿綾誨瀷鏃舵墍鏈夌殑鎿嶄綔鏁伴兘鑷姩杞崲涓烘棤絎﹀彿綾誨瀷銆?鍥犳-20鍙樻垚浜嗕竴涓潪甯稿ぇ鐨勬鏁存暟錛屾墍浠ヨ琛ㄨ揪寮忚綆楀嚭鐨勭粨鏋滃ぇ浜?銆傝繖涓鐐瑰浜庡簲褰撻綣佺敤鍒版棤絎﹀彿鏁版嵁綾誨瀷鐨勫祵鍏ュ紡緋葷粺鏉ヨ鏄赴甯擱噸瑕佺殑銆傚鏋滀綘絳旈敊浜嗚繖涓棶棰橈紝浣犱篃灝卞埌浜嗗緱涓嶅埌榪欎喚宸ヤ綔鐨勮竟緙樸?BR><BR>13. 璇勪環涓嬮潰鐨勪唬鐮佺墖鏂細<BR><BR>unsigned int zero = 0; <BR>unsigned int compzero = 0xFFFF; <BR>/*1's complement of zero */<BR><BR>瀵逛簬涓涓猧nt鍨嬩笉鏄?6浣嶇殑澶勭悊鍣ㄤ負璇達紝涓婇潰鐨勪唬鐮佹槸涓嶆紜殑銆傚簲緙栧啓濡備笅錛?BR><BR>unsigned int compzero = ~0;<BR><BR>榪欎竴闂鐪熸鑳芥彮闇插嚭搴旇瘯鑰呮槸鍚︽噦寰楀鐞嗗櫒瀛楅暱鐨勯噸瑕佹с傚湪鎴戠殑緇忛獙閲岋紝濂界殑宓屽叆寮忕▼搴忓憳闈炲父鍑嗙‘鍦版槑鐧界‖浠剁殑緇嗚妭鍜屽畠鐨勫眬闄愶紝鐒惰孭C鏈虹▼搴忓線寰鎶婄‖浠朵綔涓轟竴涓棤娉曢伩鍏嶇殑鐑︽伡銆?<BR>鍒頒簡榪欎釜闃舵錛屽簲璇曡呮垨鑰呭畬鍏ㄥ瀭澶翠撫姘斾簡鎴栬呬俊蹇冩弧婊″織鍦ㄥ繀寰椼傚鏋滄樉鐒跺簲璇曡呬笉鏄緢濂斤紝閭d箞榪欎釜嫻嬭瘯灝卞湪榪欓噷緇撴潫浜嗐備絾濡傛灉鏄劇劧搴旇瘯鑰呭仛寰椾笉閿欙紝閭d箞鎴戝氨鎵斿嚭涓嬮潰鐨勮拷鍔犻棶棰橈紝榪欎簺闂鏄瘮杈冮毦鐨勶紝鎴戞兂浠呬粎闈炲父浼樼鐨勫簲璇曡呰兘鍋氬緱涓嶉敊銆傛彁鍑鴻繖浜涢棶棰橈紝鎴戝笇鏈涙洿澶氱湅鍒板簲璇曡呭簲浠橀棶棰樼殑鏂規硶錛岃屼笉鏄瓟妗堛備笉綆″浣曪紝浣犲氨褰撴槸榪欎釜濞變箰鍚р?BR><BR><BR><BR>鍔ㄦ佸唴瀛樺垎閰嶏紙Dynamic memory allocation錛?BR><BR><BR><BR>14. 灝界涓嶅儚闈炲祵鍏ュ紡璁$畻鏈洪偅涔堝父瑙侊紝宓屽叆寮忕郴緇熻繕鏄湁浠庡爢錛坔eap錛変腑鍔ㄦ佸垎閰嶅唴瀛樼殑榪囩▼鐨勩傞偅涔堝祵鍏ュ紡緋葷粺涓紝鍔ㄦ佸垎閰嶅唴瀛樺彲鑳藉彂鐢熺殑闂鏄粈涔堬紵<BR><BR>榪欓噷錛屾垜鏈熸湜搴旇瘯鑰呰兘鎻愬埌鍐呭瓨紕庣墖錛岀鐗囨敹闆嗙殑闂錛屽彉閲忕殑鎸佽鏃墮棿絳夌瓑銆傝繖涓富棰樺凡緇忓湪ESP鏉傚織涓騫挎硾鍦拌璁鴻繃浜嗭紙涓昏鏄?P.J. Plauger, 浠栫殑瑙i噴榪滆繙瓚呰繃鎴戣繖閲岃兘鎻愬埌鐨勪換浣曡В閲婏級錛屾墍鏈夊洖榪囧ご鐪嬩竴涓嬭繖浜涙潅蹇楀惂錛佽搴旇瘯鑰呰繘鍏ヤ竴縐嶈櫄鍋囩殑瀹夊叏鎰熻鍚庯紝鎴戞嬁鍑鴻繖涔堜竴涓皬鑺傜洰錛氫笅闈㈢殑浠g爜鐗囨鐨勮緭鍑烘槸浠涔堬紝涓轟粈涔堬紵<BR><BR>char *ptr; <BR>if ((ptr = (char *)malloc(0)) == NULL) <BR>puts("Got a null pointer"); <BR>else <BR>puts("Got a valid pointer"); <BR><BR>榪欐槸涓涓湁瓚g殑闂銆傛渶榪戝湪鎴戠殑涓涓悓浜嬩笉緇忔剰鎶?鍊間紶緇欎簡鍑芥暟malloc錛屽緱鍒頒簡涓涓悎娉曠殑鎸囬拡涔嬪悗錛屾垜鎵嶆兂鍒拌繖涓棶棰樸傝繖灝辨槸涓婇潰鐨勪唬鐮侊紝璇ヤ唬鐮佺殑杈撳嚭鏄淕ot a valid pointer鈥濄傛垜鐢ㄨ繖涓潵寮濮嬭璁鴻繖鏍風殑涓闂錛岀湅鐪嬭闈㈣瘯鑰呮槸鍚︽兂鍒板簱渚嬬▼榪欐牱鍋氭槸姝g‘銆傚緱鍒版紜殑絳旀鍥虹劧閲嶈錛屼絾瑙e喅闂鐨勬柟娉曞拰浣犲仛鍐沖畾鐨勫熀鏈師鐞嗘洿閲嶈浜涖?BR><BR>Typedef <BR><BR>15. Typedef 鍦–璇█涓綣佺敤浠ュ0鏄庝竴涓凡緇忓瓨鍦ㄧ殑鏁版嵁綾誨瀷鐨勫悓涔夊瓧銆備篃鍙互鐢ㄩ澶勭悊鍣ㄥ仛綾諱技鐨勪簨銆備緥濡傦紝鎬濊冧竴涓嬩笅闈㈢殑渚嬪瓙錛?<BR>#define dPS struct s * <BR>typedef struct s * tPS; <BR><BR>浠ヤ笂涓ょ鎯呭喌鐨勬剰鍥鵑兘鏄瀹氫箟dPS 鍜?tPS 浣滀負涓涓寚鍚戠粨鏋剆鎸囬拡銆傚摢縐嶆柟娉曟洿濂藉憿錛燂紙濡傛灉鏈夌殑璇濓級涓轟粈涔堬紵 <BR>榪欐槸涓涓潪甯稿井濡欑殑闂錛屼換浣曚漢絳斿榪欎釜闂錛堟褰撶殑鍘熷洜錛夋槸搴斿綋琚伃鍠滅殑銆傜瓟妗堟槸錛歵ypedef鏇村ソ銆傛濊冧笅闈㈢殑渚嬪瓙錛?<BR>dPS p1,p2; <BR>tPS p3,p4;<BR><BR>絎竴涓墿灞曚負 <BR>struct s * p1, p2;<BR><BR>涓婇潰鐨勪唬鐮佸畾涔塸1涓轟竴涓寚鍚戠粨鏋勭殑鎸囷紝p2涓轟竴涓疄闄呯殑緇撴瀯錛岃繖涔熻涓嶆槸浣犳兂瑕佺殑銆傜浜屼釜渚嬪瓙姝g‘鍦板畾涔変簡p3 鍜宲4 涓や釜鎸囬拡銆?BR><BR>鏅︽訂鐨勮娉?BR><BR>16. C璇█鍚屾剰涓浜涗護浜洪渿鎯婄殑緇撴瀯,涓嬮潰鐨勭粨鏋勬槸鍚堟硶鐨勫悧錛屽鏋滄槸瀹冨仛浜涗粈涔堬紵 <BR>int a = 5, b = 7, c; <BR>c = a+++b;<BR><BR>榪欎釜闂灝嗗仛涓鴻繖涓祴楠岀殑涓涓剦蹇殑緇撳熬銆備笉綆′綘鐩鎬笉鐩鎬俊錛屼笂闈㈢殑渚嬪瓙鏄畬鍏ㄥ悎涔庤娉曠殑銆傞棶棰樻槸緙栬瘧鍣ㄥ浣曞鐞嗗畠錛熸按騫充笉楂樼殑緙栬瘧浣滆呭疄闄呬笂浼氫簤璁鴻繖涓棶棰橈紝鏍規嵁鏈澶勭悊鍘熷垯錛岀紪璇戝櫒搴斿綋鑳藉鐞嗗敖鍙兘鎵鏈夊悎娉曠殑鐢ㄦ硶銆傚洜姝わ紝涓婇潰鐨勪唬鐮佽澶勭悊鎴愶細 <BR>c = a++ + b; <BR>鍥犳, 榪欐浠g爜鎸佽鍚巃 = 6, b = 7, c = 12銆?<BR>濡傛灉浣犵煡閬撶瓟妗堬紝鎴栫寽鍑烘紜瓟妗堬紝鍋氬緱濂姐傚鏋滀綘涓嶇煡閬撶瓟妗堬紝鎴戜篃涓嶆妸榪欎釜褰撲綔闂銆傛垜鍙戠幇榪欎釜闂鐨勬渶澶уソ澶勬槸:榪欐槸涓涓叧浜庝唬鐮佺紪鍐欓鏍鹼紝浠g爜鐨勫彲璇繪э紝浠g爜鐨勫彲淇敼鎬х殑濂界殑璇濋</FONT></P><img src ="http://m.shnenglu.com/SEMAN/aggbug/1270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/SEMAN/" target="_blank">鍛沖叏姣忔棩C++</a> 2005-11-23 20:25 <a href="http://m.shnenglu.com/SEMAN/archive/2005/11/23/1270.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Google涓浗緙栫▼鎸戞垬璧?/title><link>http://m.shnenglu.com/SEMAN/archive/2005/11/22/1241.html</link><dc:creator>鍛沖叏姣忔棩C++</dc:creator><author>鍛沖叏姣忔棩C++</author><pubDate>Tue, 22 Nov 2005 06:57:00 GMT</pubDate><guid>http://m.shnenglu.com/SEMAN/archive/2005/11/22/1241.html</guid><wfw:comment>http://m.shnenglu.com/SEMAN/comments/1241.html</wfw:comment><comments>http://m.shnenglu.com/SEMAN/archive/2005/11/22/1241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/SEMAN/comments/commentRss/1241.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/SEMAN/services/trackbacks/1241.html</trackback:ping><description><![CDATA[<FONT size=2>鍦板潃:http://www.topcoder.com/pl/?module=Static&d1=gccj05&d2=ZH_overview<BR><BR><span id="hvzpftn" class=bigTitle>Google鈩?Code Jam - 涓浗緙栫▼鎸戞垬璧?/SPAN> </FONT><SPAN valign="top"><FONT size=2>锘?</FONT> <TABLE class=smallBoxTable cellSpacing=0 cellPadding=0 align=right> <TBODY> <TR> <TD class=bodyText style="PADDING-BOTTOM: 5px" align=middle><A ><FONT size=2>English Version</FONT></A><FONT size=2> </FONT></TD></TR> <TR> <TD class=smallBlackBox align=middle><A ><FONT size=2><IMG src="http://www.topcoder.com/i/events/gccj05/ZH_pbtc_logo.gif" border=0></FONT></A><FONT size=2> </FONT></TD></TR> <TR> <TD><FONT size=2> </FONT></TD></TR> <TR> <TD class=smallBlueBox noWrap align=middle><FONT size=2><span id="hvzpftn" class=bodyTextBlue>閲嶈鏃ユ湡</SPAN> <BR><BR><B>鎶ュ悕寮濮?/B><BR>11鏈?1鏃ユ槦鏈熶竴 <BR><BR><B>鍏ュ洿璧?/B><BR>12鏈?2鏃ユ槦鏈熶竴 <BR><BR><B>鎬誨喅璧?/B><BR>1鏈?0鏃ユ槦鏈熶簲 </FONT></TD></TR> <TR> <TD><FONT size=2> </FONT></TD></TR> <TR> <TD class=smallGreenBox noWrap align=middle><FONT size=2><span id="hvzpftn" class=bodyTextGreen>浠峰?5涓囧厓鐨?BR>楂樼鎶濂栧搧</SPAN> </FONT></TD></TR></TBODY></TABLE></SPAN><BR><BR><FONT size=2>浣犳湁鐢ㄦ妧鏈敼鍙樹笘鐣岀殑姊︽兂鍚楋紵浣犳湁鎸戞垬闅懼害鐨勫喅蹇冨悧錛熶綘鎯沖拰鍥藉唴璁$畻鏈虹簿鑻變竴鍐抽珮涓嬪悧錛熷叏鐞冪紪紼嬬晫鐭ュ悕鐨勨淕oogle緙栫▼鎸戞垬璧汣ode Jam鈥濆嵆灝嗙櫥闄嗕腑鍥姐傝繖欏規瘮璧涙瘡騫撮兘鏄叏鐞冭綆楁満鐣岀殑涓嬈$洓浜嬨備粖騫?Google 棣栨涓撻棬涓轟腑鍥戒婦鍔炶繖欏規瘮璧涳紝鏃ㄥ湪寮樻壃璁$畻鏈虹瀛︾殑鑹烘湳錛屾帹榪涗腑鍥借綆楁満緙栫▼鏁欒偛錛岄紦鍔卞茍鍢夊涓浗欏剁駭緙栫▼浜烘墠銆?<BR><BR>绔炶禌鐨勯鐩叿鏈夌浉褰撶殑鎸戞垬鎬э紝绔炶禌濂栧搧涔熼潪甯鎬赴鍘氥?鏈夊織涔嬪+鍙熸鏈轟細涓灞曟墠鑳斤紝鎴愪負鑴遍鑰屽嚭鐨勪腑鍥芥渶浣熾?<BR><BR>榪欓噷鏈夋瀬瀵屾寫鎴樻х殑棰樼洰錛岄珮縐戞妧鐨勫鍝侊紝浠ュ強浠や漢璧炲徆鐨勮崳鑰錛屼綘榪樺湪絳変粈涔堬紵 <BR><BR><span id="hvzpftn" class=greenSubtitle>璧涗簨榪愪綔緇嗗垯</SPAN> <BR><BR><B>姝ゆ鎸戞垬璧涗互璁℃椂璧涚殑褰㈠紡涓捐錛屾墍鏈夌殑鍙傝禌鑰呴兘灝嗗湪闄愬畾鐨勬椂闂村唴鍦ㄧ嚎瀹屾垚鐩稿悓鐨勭珵璧涢鐩?/B> <BR><BR><B>鍙傝禌鑰呭湪绔炶禌榪囩▼褰撲腑錛屽彲浠ラ夌敤浠ヤ笅4縐嶇紪紼嬭璦鐨勪竴縐?Java錛孋++錛孋#鍜孷B銆?/B> <BR><BR>浠ヤ笅鏄珵璧涚浉鍏寵繃紼嬭鏄庯細 <BR><BR></FONT> <div id="hvzpftn" class=indented><FONT size=2><B>涓嬭澆绔炶禌騫沖彴</B><BR>鍙傝禌鑰呭皢浠嶵opCoder廬鍏徃鐨勭珵璧涘鉤鍙?涓涓狫ava紼嬪簭)寮濮嬭笍鍏ョ珵璧涚殑絎竴姝ャ備笅杞藉鉤鍙扮▼搴忥紝浠旂粏闃呰绔炶禌棰樼洰錛岀劧鍚庡皢瑙e喅鏂規緙栧啓鎴愪唬鐮佸艦寮忥紝緙栬瘧騫舵祴璇曟柟妗堬紝鏈鍚庢彁浜ゆ柟妗堜唬鐮侊紝寰楀埌鐩稿簲鐨勫垎鏁般傚弬璧涜呭彲浠ュ湪姝e紡绔炶禌鍓嶄笅杞界珵璧涘鉤鍙幫紝閫氳繃鎻愪緵鐨勬牱渚嬫潵浣撻獙鍜岀啛鎮夊鉤鍙扮殑鎿嶄綔鐜銆?<BR><BR><B>緙栫爜闃舵</B><BR>鍦ㄦ寚瀹氱殑鏃ユ湡鍜屾椂闂達紝鍙傝禌鑰呰繘鍏ョ珵璧涘鉤鍙幫紝浠ユ瘡10浜轟竴緇勮瀹夋帓榪涘叆鐩稿簲鐨勮櫄鎷熸埧闂淬傛墍鏈夊弬璧涜呴兘灝嗚幏寰楃浉鍚岀殑3閬撶珵璧涢錛?棰樼殑闅懼害閫掑銆傛闃舵绔炶禌涓紝绔炶禌鑰呴』鍦ㄦ渶鐭椂闂村唴瀹屾垚棰樼洰錛屾彁渚涙紜殑鏂規浠g爜錛屼唬鐮佹彁浜ゅ緱瓚婃棭錛岀珵璧涜呭緱鍒扮殑鍒嗘暟瓚婇珮銆傚湪绔炶禌鐨勬暣涓繃紼嬩腑錛屾帓鍚嶆浼氭樉紺虹珵璧涜呯殑绱鍒嗘暟銆?<BR><BR><B>鎸戞垬闃舵</B><BR>鍦ㄦ寫鎴橀樁孌碉紝鍙傝禌鑰呬笉浣嗗彲浠ョ湅鍒板叾浠栧弬璧涜呮彁浜ょ殑鏂規浠g爜錛岃繕鍙互緇欏嚭嫻嬭瘯鏁版嵁錛屼嬌鍏朵粬鍙傝禌鑰呮彁浜ょ殑紼嬪簭寰楀埌閿欒鐨勮繍綆楃粨鏋滐紝浠庤屾帹緲誨叾浠栧弬璧涜呮墍鎻愪氦鐨勬柟妗堛傝繖縐嶆柟寮忥紝瀵逛簬緙栫▼浜哄憳鏉ヨ鏄渶鐩存帴鐨勭珵璧涘艦寮忋傚湪榪欎釜闃舵錛屽弬璧涜呯殑嫻嬭瘯鏁版嵁鑻ヨ兘鎴愬姛鎺ㄧ炕浠栦漢鎻愪氦鐨勪唬鐮佸垯鍙緱鍒嗭紱鍙嶄箣錛屽皢琚墸鍒嗐?<BR><BR><B>緋葷粺嫻嬭瘯</B><BR>鍦ㄧ郴緇熸祴璇曢樁孌碉紝緋葷粺浼氳嚜鍔ㄥ姣忎釜鎻愪氦鏂規浠g爜榪涜嫻嬭瘯錛岀‘瀹氬叾姝g‘紼嬪害鍜屽彲琛屾э紝騫朵互姝ょ粰鍑哄弬璧涜呯浉搴旂殑鍒嗘暟銆傛暣涓瘎嫻嬭繃紼嬭楁椂寰堢煭錛屽弬璧涜呭綋鍦哄彲浠ョ煡閬撹嚜宸辯殑姣旇禌緇撴灉銆?</FONT></DIV><BR><FONT size=2><span id="hvzpftn" class=greenSubtitle>鍙傝禌欏葷煡</SPAN> <BR><BR>鎶ュ悕娉ㄥ唽鏃墮棿錛氫粠鍖椾含鏃墮棿2005騫?1鏈?1鏃ユ槦鏈熶竴涓婂崍9鏃跺紑濮嬶紝鑷沖寳浜椂闂?005騫?2鏈?2鏃ヤ笂鍗?鏃剁粨鏉熴傛姤鍚嶆敞鍐屾病鏈変漢鏁伴檺鍒訛紝浣嗘槸鍙湁閫氳繃璧勬牸璧涚殑鍓?00鍚嶏紙12鏈?2鏃ヤ婦琛岋級鍙互鏅嬬駭姝ゆ姝e紡姣旇禌鐨勭涓杞傜涓杞瘮璧涘皢鍦?2鏈?9鏃ヤ婦琛屻?<BR><BR>棣栬疆鍚嶆鍓?50鍚嶅皢浜?2鏈?2鏃ユ檵綰х浜岃疆錛岀浜岃疆鐨勫墠50鍚嶅垯灝嗗弬鍔犲湪涓浗涓捐鐨勫啝鍐涜禌錛屼簤澶烘繪暟杈?5涓囧厓鐨勯珮棰濆鍝併?<BR><BR></FONT> <TABLE class=sidebarBox cellSpacing=2 cellPadding=6 width=500 align=center border=0> <TBODY> <TR> <TD class=sidebarTitle width="30%"><FONT size=2>鏃ユ湡</FONT></TD> <TD class=sidebarTitle width="20%"><FONT size=2>鏃墮棿 *</FONT></TD> <TD class=sidebarTitle width="50%"><FONT size=2>鐘舵?/FONT></TD></TR> <TR vAlign=top> <TD class=sidebarText><FONT size=2>11鏈?1鏃ユ槦鏈熶竴</FONT></TD> <TD class=sidebarText><FONT size=2>9:00</FONT></TD> <TD class=sidebarText><FONT size=2>娉ㄥ唽寮濮?/FONT></TD></TR> <TR vAlign=top> <TD class=sidebarText noWrap><FONT size=2>12鏈?2鏃ユ槦鏈熶竴</FONT></TD> <TD class=sidebarText><FONT size=2>9:00</FONT></TD> <TD class=sidebarText><FONT size=2>娉ㄥ唽緇撴潫</FONT></TD></TR> <TR vAlign=top> <TD class=sidebarText><FONT size=2>12鏈?2鏃ユ槦鏈熶竴</FONT></TD> <TD class=sidebarText><FONT size=2>12:00</FONT></TD> <TD class=sidebarText><FONT size=2>璧勬牸璧涘紑濮?/FONT></TD></TR> <TR vAlign=top> <TD class=sidebarText><FONT size=2>12鏈?3鏃ユ槦鏈熶簩</FONT></TD> <TD class=sidebarText><FONT size=2>12:00</FONT></TD> <TD class=sidebarText><FONT size=2>璧勬牸璧涚粨鏉?/FONT></TD></TR> <TR vAlign=top> <TD class=sidebarText><FONT size=2>12鏈?9鏃ユ槦鏈熶竴</FONT></TD> <TD class=sidebarText><FONT size=2>21:00</FONT></TD> <TD class=sidebarText><FONT size=2>絎竴杞?500鍚嶅弬璧涜?/FONT></TD></TR> <TR vAlign=top> <TD class=sidebarText><FONT size=2>12鏈?2鏃ユ槦鏈熷洓</FONT></TD> <TD class=sidebarText><FONT size=2>21:00</FONT></TD> <TD class=sidebarText><FONT size=2>絎簩杞?250鍚嶅弬璧涜?/FONT></TD></TR> <TR vAlign=top> <TD class=sidebarText><FONT size=2>1鏈?0鏃ユ槦鏈熶簲</FONT></TD> <TD class=sidebarText><FONT size=2>寰呭畾</FONT></TD> <TD class=sidebarText><FONT size=2>鍐犲啗璧?50鍚嶅弬璧涜?/FONT></TD></TR> <TR vAlign=top> <TD class=sidebarText colSpan=3><FONT size=2>* 涓婅堪鏃墮棿鐨嗕負鍖椾含鏃墮棿銆傚啝鍐涜禌鏃ユ湡鏈夊彲鑳藉彂鐢熷彉鍖栵紝璇鋒敞鎰忓眾鏃墮氱煡銆?/FONT></TD></TR></TBODY></TABLE><BR><BR><FONT size=2><span id="hvzpftn" class=greenSubtitle>濂栧搧</SPAN> <BR><BR>鏅嬬駭絎簩杞殑250鍚嶅弬璧涜呭皢鑾瘋禒"Google鈩?Code Jam - 涓浗緙栫▼鎸戞垬璧?T鎭や竴浠跺拰鏉庡紑澶嶅崥澹挵鍐欏茍絳懼悕鐨勩婂仛鏈濂界殑鑷繁銆嬩竴涔︺傛檵綰у啝鍐涜禌鐨?0鍚嶅弬璧涜呭皢鑾峰緱濡備笅鐨勫欏? <BR><BR></FONT> <TABLE class=sidebarBox cellSpacing=2 cellPadding=6 width=500 align=center border=0> <TBODY> <TR vAlign=top> <TD class=sidebarTitle><FONT size=2>鍙傝禌鑰?/FONT></TD> <TD class=sidebarTitle><FONT size=2>濂栧搧</FONT></TD></TR> <TR vAlign=top> <TD class=sidebarText><B><FONT size=2>絎?鍚?(鍏變環鍊?0,000浜烘皯甯?</FONT></B></TD> <TD class=sidebarText><B><FONT size=2>涓緇勯珮绔釜浜虹紪紼嬪伐浣滅珯</FONT></B></TD></TR> <TR vAlign=top> <TD class=sidebarText><FONT size=2>絎?鑷崇4鍚?(姣忎綅濂栧搧浠峰?0,000浜烘皯甯?</FONT></TD> <TD class=sidebarText><FONT size=2>涓鍙扮瑪璁版湰鐢佃剳錛?PDA鎵嬫満錛?浠ュ強涓嬈懼叏鏂頒釜浜洪殢韜惉 </FONT></TD></TR> <TR vAlign=top> <TD class=sidebarText><FONT size=2>絎?鑷?0鍚?姣忎綅濂栧搧浠峰?,000浜烘皯甯?</FONT></TD> <TD class=sidebarText><FONT size=2>涓鍙版暟瀛楃浉鏈猴紝PDA鎵嬫満錛?浠ュ強涓嬈懼叏鏂頒釜浜洪殢韜惉</FONT></TD></TR> <TR vAlign=top> <TD class=sidebarText><FONT size=2>絎?1鑷?0鍚?姣忎綅濂栧搧浠峰?,000浜烘皯甯?</FONT></TD> <TD class=sidebarText><FONT size=2>PDA鎵嬫満錛?浠ュ強涓嬈懼叏鏂頒釜浜洪殢韜惉</FONT></TD></TR> <TR vAlign=top> <TD class=sidebarText><FONT size=2>絎?1鑷?0鍚?(姣忎綅濂栧搧浠峰?,000浜烘皯甯?</FONT></TD> <TD class=sidebarText><FONT size=2>涓嬈懼叏鏂頒釜浜洪殢韜惉</FONT></TD></TR></TBODY></TABLE><img src ="http://m.shnenglu.com/SEMAN/aggbug/1241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/SEMAN/" target="_blank">鍛沖叏姣忔棩C++</a> 2005-11-22 14:57 <a href="http://m.shnenglu.com/SEMAN/archive/2005/11/22/1241.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>An introduction to bitwise operatorshttp://m.shnenglu.com/SEMAN/archive/2005/11/21/1211.html鍛沖叏姣忔棩C++鍛沖叏姣忔棩C++Mon, 21 Nov 2005 00:03:00 GMThttp://m.shnenglu.com/SEMAN/archive/2005/11/21/1211.htmlhttp://m.shnenglu.com/SEMAN/comments/1211.htmlhttp://m.shnenglu.com/SEMAN/archive/2005/11/21/1211.html#Feedback0http://m.shnenglu.com/SEMAN/comments/commentRss/1211.htmlhttp://m.shnenglu.com/SEMAN/services/trackbacks/1211.htmlIntroduction   http://www.codeproject.com/cpp/bitbashing.asp

I have noticed that some people seem to have problems with bitwise operators, so I decided to write this brief tutorial on how to use them.

An Introduction to bits

Bits, what are they you may ask?

Well, simply put, bits are the individual ones and zeros that make up every thing we do with computers. All the data you use is stored in your computer using bits. A BYTE is made up of eight bits, a WORD is two BYTEs, or sixteen bits. And a DWORD is two WORDS, or thirty two bits.

 0 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 1 0 0 0
||                  |                   |                    |                  ||
|+- bit 31       |                    |                    |         bit 0 -+|
|                   |                    |                    |                   |
+-- BYTE 3 ---+--- BYTE 2 ---+--- BYTE 1 ---+-- BYTE 0 ---+
|                                        |                                         |
+----------- WORD 1 --------+----------- WORD 0 ---------+
|                                                                                  |
+--------------------------- DWORD -----------------------+

The beauty of having bitwise operators is that you can use a BYTE, WORD or DWORD as a small array or structure. Using bitwise operators you can check or set the values of individual bits or even a group of bits.

Hexadecimal numbers and how they relate to bits

When working with bits, it is kind of hard to express every number using just ones and zeros, which is known as binary notation. To get around this we use hexadecimal (base 16) numbers.

As you may or may not know, it takes four bits to cover all the numbers from zero to fifteen, which also happens to be the range of a single digit hexadecimal number. This group of four bits, or half a BYTE, is called a nibble. As there are two nibbles in a BYTE, we can use two hexadecimal digits to show the value of one BYTE.

NIBBLE   HEX VALUE
======   =========
 0000        0
 0001        1
 0010        2
 0011        3
 0100        4
 0101        5
 0110        6
 0111        7
 1000        8
 1001        9
 1010        A
 1011        B
 1100        C
 1101        D
 1110        E
 1111        F

So if we had one BYTE containing the letter 'r' (ASCII code 114) it would look like this:

0111 0010    binary
  7    2     hexadecimal

We could write it as '0x72'

Bitwise operators

There are six bitwise operators. They are:
   &   The AND operator
   |   The OR operator
   ^   The XOR operator
   ~   The Ones Complement or Inversion operator
  >>   The Right Shift operator
  <<   The Left Shift operator.

The & operator

The & (AND) operator compares two values, and returns a value that has its bits set if, and only if, the two values being compared both have their corresponding bits set. The bits are compared using the following table

   1   &   1   ==   1
   1   &   0   ==   0
   0   &   1   ==   0
   0   &   0   ==   0

An ideal use for this is to set up a mask to check the values of certain bits. Say we have a BYTE that contains some bit flags, and we want to check if bit four bit is set.

BYTE b = 50;
if ( b & 0x10 )
    cout << "Bit four is set" << endl;
else
    cout << "Bit four is clear" << endl;

This would result in the following calculation

    00110010  - b
 & 00010000  - & 0x10
  ----------
    00010000  - result

So we see that bit four is set.

The | operator

The | (OR) operator compares two values, and returns a value that has its bits set if one or the other values, or both, have their corresponding bits set. The bits are compared using the following table

   1   |   1   ==   1
   1   |   0   ==   1
   0   |   1   ==   1
   0   |   0   ==   0

An ideal use for this is to ensure that certain bits are set. Say we want to ensure that bit three of some value is set

BYTE b = 50;
BYTE c = b | 0x04;
cout << "c = " << c << endl;

This would result in the following calculation

    00110010  - b
  | 00000100  - | 0x04
  ----------
    00110110  - result

The ^ operator

The ^ (XOR) operator compares two values, and returns a value that has its bits set if one or the other value has its corresponding bits set, but not both. The bits are compared using the following table

   1   ^   1   ==   0
   1   ^   0   ==   1
   0   ^   1   ==   1
   0   ^   0   ==   0

An ideal use for this is to toggle certain bits. Say we want toggle the bits three and four

BYTE b = 50;
cout << "b = " << b << endl;
b = b ^ 0x18;
cout << "b = " << b << endl;
b = b ^ 0x18;
cout << "b = " << b << endl;

This would result in the following calculations

    00110010  - b
 ^ 00011000  - ^ 0x18
  ----------
    00101010  - result

    00101010  - b
^ 00011000 - ^ 0x18 ---------- 00110010 - result

The ~ operator

The ~ (Ones Complement or inversion) operator acts only on one value and it inverts it, turning all the ones int zeros, and all the zeros into ones. An ideal use of this would be to set certain bytes to zero, and ensuring all other bytes are set to one, regardless of the size of the data. Say we want to set all the bits to one except bits zero and one

BYTE b = ~0x03;
cout << "b = " << b << endl;
WORD w = ~0x03;
cout << "w = " << w << endl;

This would result in the following calculations

    00000011  - 0x03
    11111100  - ~0x03  b

    0000000000000011  - 0x03
    1111111111111100  - ~0x03  w

Another ideal use, is to combine it with the & operator to ensure that certain bits are set to zero. Say we want to clear bit four

BYTE b = 50;
cout << "b = " << b << endl;
BYTE c = b & ~0x10;
cout << "c = " << c << endl;

This would result in the following calculations

    00110010  - b
 & 11101111  - ~0x10
  ----------
    00100010  - result

The >> and << operators

The >> (Right shift) and << (left shift) operators move the bits the number of bit positions specified. The >> operator shifts the bits from the high bit to the low bit. The << operator shifts the bits from the low bit to the high bit. One use for these operators is to align the bits for whatever reason (check out the MAKEWPARAM, HIWORD, and LOWORD macros)

BYTE b = 12;
cout << "b = " << b << endl;
BYTE c = b << 2;
cout << "c = " << c << endl;
c = b >> 2;
cout << "c = " << c << endl;

This would result in the following calculations

    00001100  - b
    00110000  - b << 2
    00000011  - b >> 2

Bit Fields

Another interesting thing that can be done using bits is to have bit fields. With bit fields you can set up minature structures within a BYTE, WORD or DWORD. Say, for example, we want to keep track of dates, but we want to use the least amount of memory as possible. We could declare our structure this way

struct date_struct {
    BYTE day   : 5,   // 1 to 31
         month : 4,   // 1 to 12
         year  : 14;  // 0 to 9999
    } date;

In this example, the day field takes up the lowest 5 bits, month the next four, and year the next 14 bits. So we can store the date structure in twenty three bits, which is contained in three BYTEs. The twenty fourth bit is ignored. If I had declared it using an integer for each field, the structure would have taken up 12 BYTEs.

|0 0 0 0 0 0 0 0|0 0 0 0 0 0 0 0|0 0 0 0 0 0 0 0|
   |                                   |          |           |
   +------ year -------------+ month + day --+

Now lets pick this declaration apart to see what we are doing.

First we will look at the data type we are using for the bit field structure. In this case we used a BYTE. A BYTE is 8 bits, and by using it, the compiler will allocate one BYTE for storage. If however, we use more than 8 bits in our structure, the compiler will allocate another BYTE, as many BYTEs as it takes to hold our structure. If we had used a WORD or DWORD, the compiler would have allocated a total of 32 bits to hold our structure.

Now lets look at how the various fields are declared. First we have the variable (day, month, and year), followed by a colon that separates the variable from the number of bits that it contains. Each bit field is separated by a comma, and the list is ended with a semicolon.

Now we get to the struct declaration. We put the bit fields into a struct like this so that we can use convention structure accessing notation to get at the structure members. Also, since we can not get the addresses of bit fields, we can now use the address of the structure.

date.day = 12;

dateptr = &date;
dateptr->year = 1852;




]]>
MS鐨勭瑪璇曢鐩?/title><link>http://m.shnenglu.com/SEMAN/archive/2005/11/14/1118.html</link><dc:creator>鍛沖叏姣忔棩C++</dc:creator><author>鍛沖叏姣忔棩C++</author><pubDate>Sun, 13 Nov 2005 18:05:00 GMT</pubDate><guid>http://m.shnenglu.com/SEMAN/archive/2005/11/14/1118.html</guid><wfw:comment>http://m.shnenglu.com/SEMAN/comments/1118.html</wfw:comment><comments>http://m.shnenglu.com/SEMAN/archive/2005/11/14/1118.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://m.shnenglu.com/SEMAN/comments/commentRss/1118.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/SEMAN/services/trackbacks/1118.html</trackback:ping><description><![CDATA[<P>    浠婂ぉ鍙傚姞MS2006騫村害縐嬪鏍″洯鎷涜仒浼氱殑絎旇瘯絎笁鍦猴紝鏈変竴涓畻娉曢錛屾眰涓涓爲縐嶄袱涓妭鐐圭殑鏈浣庡叕鍏辮妭鐐癸紝鍦ㄧ綉涓奊oogle浜嗕竴涓嬶紝鐪嬪埌鍘熼澶ц嚧榪欐牱鐨勶細<BR>      Given the values of two nodes in a *binary search tree*, write a c program to find the lowest common ancestor. You may assume that both values already exist in the tree.<BR><BR>The function prototype is as follows: int FindLowestCommonAncestor(node* root,int value1,int value)<BR>           20<BR>          /  \<BR>         8    22<BR>       /   \<BR>      4     12<BR>           /  \<BR>         10    14<BR>    鏋勭瓚鍑芥暟錛?struct TreeNode * FindLowestCommonTreeNode(struct node *pNode,)<BR><BR><FONT face=Verdana size=2>Struct TreeNode<BR>{<BR>   int Data;<BR>   TreeNode *pLeft, *pRight;<BR>}</FONT></P> <P><FONT face=Verdana size=2>FindLowestAncestor(Struct TreeNode *pRoot, Struct TreeNode *pNode1, Struct TreeNode *pNode2)<BR>{<BR>   if (pRoot==NULL) <BR>      return NULL;<BR>   if (pRoot==pNode1 && pRoot==pNode2) <BR>      return pRoot;<BR>   Struct TreeNode *pTemp;<BR>   if (pTemp = FindLowestAncestor(pRoot->pLeft,pNode1,pNode2)) <BR>      return pTemp;<BR>   if (pTemp = FindLowestAncestor(pRoot->pRight,pNode1,pNode2)) <BR>      return pTemp;<BR>   if (FindLowestAncestor(pRoot,pNode1,pNode1) && FindLowestAncestor(pRoot,pNo<BR>de2,pNode2)) return pRoot;</FONT></P> <P><FONT face=Verdana size=2>   return NULL;<BR>}</FONT></P><img src ="http://m.shnenglu.com/SEMAN/aggbug/1118.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/SEMAN/" target="_blank">鍛沖叏姣忔棩C++</a> 2005-11-14 02:05 <a href="http://m.shnenglu.com/SEMAN/archive/2005/11/14/1118.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>姣旈ザ鍙d護榪橀ザ鍙g殑澶嶆潅澹版槑http://m.shnenglu.com/SEMAN/archive/2005/11/02/907.html鍛沖叏姣忔棩C++鍛沖叏姣忔棩C++Wed, 02 Nov 2005 14:08:00 GMThttp://m.shnenglu.com/SEMAN/archive/2005/11/02/907.htmlhttp://m.shnenglu.com/SEMAN/comments/907.htmlhttp://m.shnenglu.com/SEMAN/archive/2005/11/02/907.html#Feedback9http://m.shnenglu.com/SEMAN/comments/commentRss/907.htmlhttp://m.shnenglu.com/SEMAN/services/trackbacks/907.html 

char ** p1;                                   //    pointer to pointer to char
const char **p2;                           //    pointer to pointer to const char
char * const * p3;                         //    pointer to const pointer to char
const char * const * p4;                //    pointer to const pointer to const char
char ** const p5;                          //    const pointer to pointer to char
const char ** const p6;                 //    const pointer to pointer to const char
char * const * const p7;                //    const pointer to const pointer to char
const char * const * const p8;       //    const pointer to const pointer to const char


娉細p1鏄寚鍚慶har綾誨瀷鐨勬寚閽堢殑鎸囬拡錛?BR>        p2鏄寚鍚慶onst char綾誨瀷鐨勬寚閽堢殑鎸囬拡錛?BR>        p3鏄寚鍚慶har綾誨瀷鐨刢onst鎸囬拡錛?BR>        p4鏄寚鍚慶onst char綾誨瀷鐨刢onst鎸囬拡錛?BR>        p5鏄寚鍚慶har綾誨瀷鐨勬寚閽堢殑const鎸囬拡錛?BR>        p6鏄寚鍚慶onst char綾誨瀷鐨勬寚閽堢殑const鎸囬拡錛?BR>        p7鏄寚鍚慶har綾誨瀷const鎸囬拡鐨刢onst鎸囬拡錛?BR>        p8鏄寚鍚慶onst char綾誨瀷鐨刢onst鎸囬拡鐨刢onst鎸囬拡銆?BR>

typedef char * a;       // a is a pointer to a char 

typedef a b();            
// b is a function that returns a pointer to a char

typedef b 
*c;            // c is a pointer to a function that returns a pointer to a char 

typedef c d();           
// d is a function returning a pointer to a function that returns a pointer to a char 

typedef d 
*e;           // e is a pointer to a function returning a pointer to a function that a pointer to a char 

e var[
10];               // var is an array of 10 pointers to functions returning pointers to  functions returning pointers to chars.


鍘熸枃鍦板潃錛?A >http://www.codeproject.com/cpp/complex_declarations.asp



]]>
My Onepage English Resumehttp://m.shnenglu.com/SEMAN/archive/2005/10/27/868.html鍛沖叏姣忔棩C++鍛沖叏姣忔棩C++Thu, 27 Oct 2005 08:36:00 GMThttp://m.shnenglu.com/SEMAN/archive/2005/10/27/868.htmlhttp://m.shnenglu.com/SEMAN/comments/868.htmlhttp://m.shnenglu.com/SEMAN/archive/2005/10/27/868.html#Feedback1http://m.shnenglu.com/SEMAN/comments/commentRss/868.htmlhttp://m.shnenglu.com/SEMAN/services/trackbacks/868.html

Yin Feilong

Address: Room 110 Building 11 Nanjing University Hankou Road 22, Nanjing, Jiangsu Province 210093

Phone: (86-25) 8359-4465  +86135-8519-7909

       E-mail: yinfeil@gmail.com             Homepage: http://www.seman.cn

Objective:

C++ Software Design Engineer

Education:

      B.E Department of Information Management, Nanjing University.  Aug.2002 鈥?Present

      GPA: Overall: 3.2/4.0

Academic Main Courses:

Development Tools of Management Information System

Management Information Systems and software Engineering

Information Analysis and Policy Making, Information Retrieval and Storage

Programming Languages (C), Data Structures, Database Systems

Computer Network, System Science and Techniques, Information Organization

Computer Abilities:

      Certification:

           National Computer Rank Examination Grade Three(NCRE-3)

      Qualification of Computer and Software Technology Proficiency: Software Designer

      Skills:

Expert: C/C++, Visual Foxpro, HTML, Asp, CSS

Intermediate: Rational Rose, SQL Server, XML, Java, Project 2003

Beginner: C#, Asp.net, Visual C++, Oracle

English Skills:

Have a good command of both spoken and written English. Past CET-4

Experiences:

      Developer. Lily-Studio of Nanjing University, June 2003 鈥?May 2004

           Designed and implemented the Community of Lily Alumni

              Editor in chief of the magazine Network Guide

       Lab Manager. Information Technology Lab. June 2004 鈥?Present

Supervisor of Network Application, Designed and implemented FTP銆?/SPAN>SMTP-based mail Server銆?/SPAN>VPN 銆?/SPAN>Web Server

Designed and implemented 2 websites of Department of Information Management and School of Public, using ASP and ACCESS

              Designed and implemented the platform of Tech-Learn Information

           Translate some parts of Web-based Analysis for competitive.

Honors:   

       Football銆?/SPAN>Ping pong



]]>
浜屽弶鏍戠殑妯℃澘瀹炵幇http://m.shnenglu.com/SEMAN/archive/2005/10/24/819.html鍛沖叏姣忔棩C++鍛沖叏姣忔棩C++Mon, 24 Oct 2005 03:06:00 GMThttp://m.shnenglu.com/SEMAN/archive/2005/10/24/819.htmlhttp://m.shnenglu.com/SEMAN/comments/819.htmlhttp://m.shnenglu.com/SEMAN/archive/2005/10/24/819.html#Feedback1http://m.shnenglu.com/SEMAN/comments/commentRss/819.htmlhttp://m.shnenglu.com/SEMAN/services/trackbacks/819.html闃呰鍏ㄦ枃

]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              国产欧美日韩综合一区在线播放 | 裸体一区二区三区| 欧美影视一区| 亚洲国产一区二区三区高清| 亚洲综合国产激情另类一区| 欧美一级播放| 国产精品久久久久久久久久尿 | 亚洲欧洲美洲综合色网| 久久影院午夜论| 亚洲区欧美区| 欧美成人黄色小视频| 在线成人av| 久久全国免费视频| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲午夜电影网| 久久国产欧美日韩精品| 欧美成人精品1314www| 亚洲视频精选在线| 国产精品专区h在线观看| 欧美激情视频给我| 亚洲视频图片小说| 美腿丝袜亚洲色图| 亚洲欧美网站| 亚洲精品欧洲| 亚洲经典三级| 国产精品久久久久久久一区探花| 亚洲先锋成人| 国产欧美一区二区精品性色| 欧美一区二区三区四区视频| 欧美一区二区福利在线| 精品9999| 免费中文字幕日韩欧美| 欧美日本亚洲| 亚洲一区二区三区四区在线观看| 欧美韩日亚洲| 欧美韩日精品| 亚洲视频中文| 久久不射中文字幕| 国产欧美日韩精品在线| 国产麻豆综合| 亚洲视频电影在线| 性伦欧美刺激片在线观看| 国产视频在线观看一区二区三区| 亚洲黄色三级| 99这里只有精品| 亚洲国产成人在线播放| 欧美日韩中文在线观看| 欧美电影免费网站| 亚洲经典在线| 久久九九精品| 亚洲一区二区欧美| 欧美二区在线| 亚洲欧美网站| 国产女精品视频网站免费| 久久精品欧美日韩精品| 亚洲欧洲另类| 亚洲日本国产| 国产在线精品自拍| 性色av一区二区三区| 国语精品一区| 国产精品视频xxx| 在线精品观看| 亚洲一区3d动漫同人无遮挡| 亚洲国产精品久久久久婷婷884| 欧美在线高清视频| 一本久道综合久久精品| 亚洲人成在线观看一区二区| 99国产精品99久久久久久粉嫩| 亚洲精选在线| 国产日韩欧美另类| 老司机午夜精品视频| 久久久久久久久岛国免费| 久久精品国产99精品国产亚洲性色| 欧美日韩日本视频| 久久一区二区三区av| 欧美电影免费观看高清| 国产精品国产精品国产专区不蜜| 亚洲第一精品夜夜躁人人躁 | 欧美一级理论性理论a| 亚洲人在线视频| 在线综合欧美| 国产精品尤物| 欧美日韩综合另类| 欧美一级黄色录像| 欧美一区二粉嫩精品国产一线天| 免费成年人欧美视频| 国产亚洲精品久久久久婷婷瑜伽| 久热国产精品| 国产日产精品一区二区三区四区的观看方式 | 亚洲伦伦在线| 亚洲字幕一区二区| 欧美在线亚洲在线| 亚洲最新色图| 久久精品99| 制服丝袜激情欧洲亚洲| 亚洲国产91色在线| 久久久亚洲国产美女国产盗摄| 在线视频精品一区| 欧美无乱码久久久免费午夜一区| 欧美一区二区视频97| 欧美中文字幕久久| 久久一二三国产| 亚洲欧美三级伦理| 国产精品乱码一区二三区小蝌蚪| 欧美日韩中文字幕精品| 欧美精品情趣视频| 国产一区二区三区免费在线观看| 中日韩视频在线观看| 亚洲一区在线免费| 狠狠久久亚洲欧美专区| 国产精品久久久久久久久久ktv | 欧美美女福利视频| 艳妇臀荡乳欲伦亚洲一区| 一区二区电影免费在线观看| 国产视频欧美| 国产情侣一区| 久久爱91午夜羞羞| 91久久精品久久国产性色也91| 久久精品中文字幕一区二区三区| 91久久精品国产91性色| 亚洲欧美国产精品专区久久| 亚洲精品中文字| 亚洲人成在线观看| 国产美女高潮久久白浆| 嫩草国产精品入口| 欧美性猛片xxxx免费看久爱| 久久欧美肥婆一二区| 欧美大香线蕉线伊人久久国产精品| 一本大道久久a久久精二百| 亚洲伊人色欲综合网| 在线欧美不卡| 午夜免费日韩视频| 亚洲性夜色噜噜噜7777| 麻豆精品在线播放| 欧美在线free| 国产精品一区毛片| 亚洲女性裸体视频| 欧美一区二区大片| 国产亚洲一区二区三区在线观看| 一二三区精品| 亚洲四色影视在线观看| 欧美日韩一区二区三区免费 | 亚洲第一福利在线观看| 篠田优中文在线播放第一区| 中文亚洲字幕| 亚洲国产精品传媒在线观看 | 欧美a级一区二区| 美女精品国产| 欧美在线观看一区| 久久久久久久久岛国免费| 国产免费成人| 久久一区二区三区四区| 亚洲激情影院| 欧美aⅴ一区二区三区视频| 欧美日韩国内| 久久精品国产一区二区三区免费看| 亚洲盗摄视频| 欧美成人dvd在线视频| 好看不卡的中文字幕| 一区二区三区高清| 欧美一区二区免费观在线| 国产一区二区精品久久99| 欧美伊人精品成人久久综合97| 亚洲精选久久| 免费欧美在线视频| 亚洲精品国产精品国自产观看| 亚洲靠逼com| 国产精品成人观看视频国产奇米| 亚洲综合另类| 欧美**字幕| 一区二区三区视频在线看| 国产精品久久久久77777| 午夜精品影院在线观看| 葵司免费一区二区三区四区五区| 91久久久亚洲精品| 国产精品成人aaaaa网站| 午夜一级久久| 亚洲国产成人高清精品| 亚洲女优在线| 亚洲国产欧美久久| 国产精品三级视频| 老司机免费视频一区二区三区| 日韩手机在线导航| 久久蜜桃香蕉精品一区二区三区| 亚洲美女免费视频| 狠狠色丁香婷婷综合| 欧美三级午夜理伦三级中视频| 久久精品国产69国产精品亚洲| 亚洲激情第一页| 久久综合电影一区| 午夜精品一区二区在线观看| 在线日本欧美| 国产视频久久久久久久| 欧美日韩免费观看一区三区 | 日韩视频免费看| 国产视频一区在线观看一区免费| 欧美另类亚洲| 欧美国产精品一区| 久久久99久久精品女同性| 亚洲影院免费观看|