argc,argv和C/C++易错题分析

发布时间:2021-11-29 14:49:47 作者:iii
来源:亿速云 阅读:168

这篇文章主要讲解了“argc,argv和C/C++易错题分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“argc,argv和C/C++易错题分析”吧!

argc即argument count. 顾名思义,是用户在命令行内输入的参数个数。

argv即argument vector. 是用户输入的参数vector库(数组)

int main(int argc ,char *argv[])

char *argv[] 即指针数组([]优先级别高于*,于是就里面的每个元素都是char*类型,要理解好 char (*argv)[] 和 char *argv[]的区别),每一个元素内,存的都是参数,这些参数都是字符串。其实就是vector库。如果你这里暂时不理解,没关系,往下看。

它其实就是记录了程序被执行时所传入的参数。包括打开程序的那条语句。如我保存了一个程序为test.exe, 在命令行执行这个程序并顺便带几个参数:

test.exe x y z

这样的话argc就是四个参数,分别为text.exe、x、y、z. 输出的话将是这样的:

代码:

#include <iostream>

using namespace std;

int main(int argc, char* argv[]) {

cout << "参数个数是: " << argc << endl << "分别是:" << endl;

for (int i = 0; i < argc; ++i)

cout << argv[i] << endl;

return 0;

}

argc,argv和C/C++易错题分析

可见它其实就是将参数存在argv这个vector库)内,你想输出的话可以直接输出这些参数。

理清楚优先级别

1.

int x,y,z;

x=y=1;

z=x++,y++,++y;

printf("%d,%d,%d\n",x,y,z);

其中:

z=x++,y++,++y;

这是逗号表达式,最终结果为最后一个数。这么说你可能会以为答案是2,2,3.

但实际上不是的,这里不是z=(x++,y++,++y);如果是这样的才是2,2,3.

所以正确答案应该是2,3,1.

2.

设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=1,则逻辑表达式(m==a<b)&&(n==c<d) 的值为__.

你或许会以为是1,但实际上大小号的优先级别大于==号,所以答案应该是0

小心取整问题

假定x和y为double型,则表达式(x=2,y=x+5/2)的值是__C__ 。

你或许会以为答案是4.500000,但是5/2会自动向下取整,所以真实答案是4.000000.

static局部变量只被初始化一次,下一次依据上一次结果值

#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,我不想排版太难看,所以还是自己脑补空格变换行吧!

小心宏定义

#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。原因是什么呢?因为宏定义只是单纯的替换而已。其实b=a+1*a+1=7.

感谢各位的阅读,以上就是“argc,argv和C/C++易错题分析”的内容了,经过本文的学习后,相信大家对argc,argv和C/C++易错题分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. python或C++读取指定文件夹下的所有图片
  2. Linux环境如何使用g++编译C++方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++ argc argv

上一篇:AS400处理数据高效率的几个原因分别是什么

下一篇:C/C++ Qt TreeWidget单层树形组件怎么应用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》