您好,登錄后才能下訂單哦!
這篇文章主要講解了“argc,argv和C/C++易錯(cuò)題分析”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“argc,argv和C/C++易錯(cuò)題分析”吧!
argc即argument count. 顧名思義,是用戶在命令行內(nèi)輸入的參數(shù)個(gè)數(shù)。
argv即argument vector. 是用戶輸入的參數(shù)vector庫(數(shù)組)
int main(int argc ,char *argv[])
char *argv[] 即指針數(shù)組([]優(yōu)先級別高于*,于是就里面的每個(gè)元素都是char*類型,要理解好 char (*argv)[] 和 char *argv[]的區(qū)別),每一個(gè)元素內(nèi),存的都是參數(shù),這些參數(shù)都是字符串。其實(shí)就是vector庫。如果你這里暫時(shí)不理解,沒關(guān)系,往下看。
它其實(shí)就是記錄了程序被執(zhí)行時(shí)所傳入的參數(shù)。包括打開程序的那條語句。如我保存了一個(gè)程序?yàn)閠est.exe, 在命令行執(zhí)行這個(gè)程序并順便帶幾個(gè)參數(shù):
test.exe x y z
這樣的話argc就是四個(gè)參數(shù),分別為text.exe、x、y、z. 輸出的話將是這樣的:
代碼:
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
cout << "參數(shù)個(gè)數(shù)是: " << argc << endl << "分別是:" << endl;
for (int i = 0; i < argc; ++i)
cout << argv[i] << endl;
return 0;
}
可見它其實(shí)就是將參數(shù)存在argv這個(gè)vector庫)內(nèi),你想輸出的話可以直接輸出這些參數(shù)。
理清楚優(yōu)先級別:
1.
int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
其中:
z=x++,y++,++y;
這是逗號表達(dá)式,最終結(jié)果為最后一個(gè)數(shù)。這么說你可能會(huì)以為答案是2,2,3.
但實(shí)際上不是的,這里不是z=(x++,y++,++y);如果是這樣的才是2,2,3.
所以正確答案應(yīng)該是2,3,1.
2.
設(shè)a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=1,則邏輯表達(dá)式(m==a<b)&&(n==c<d) 的值為__.
你或許會(huì)以為是1,但實(shí)際上大小號的優(yōu)先級別大于==號,所以答案應(yīng)該是0
小心取整問題
假定x和y為double型,則表達(dá)式(x=2,y=x+5/2)的值是__C__ 。
你或許會(huì)以為答案是4.500000,但是5/2會(huì)自動(dòng)向下取整,所以真實(shí)答案是4.000000.
static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值
#include <iostream>
using namespace std;
int f(int a)
{
int b = 0;
static int c = 3;
b++; c++;
return(a + b + c);
}
int main()
{
int a = 2, i;
for (i = 0; i<3; i++) printf("%d\n", f(a));
return 0;
}
答案是7 8 9,我不想排版太難看,所以還是自己腦補(bǔ)空格變換行吧!
小心宏定義
#include <stdio.h>
#define ABC(x) x*x
int main()
{
int a = 3, b;
b = ABC(a + 1);
printf("b = %d \n", b);
return 0;
}
這里的答案是7。原因是什么呢?因?yàn)楹甓x只是單純的替換而已。其實(shí)b=a+1*a+1=7.
感謝各位的閱讀,以上就是“argc,argv和C/C++易錯(cuò)題分析”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對argc,argv和C/C++易錯(cuò)題分析這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。