C语言 main
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 main相关的知识,希望对你有一定的参考价值。
程序(1) main() int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3; printf("%d,%d,%d,%d\n",a,b,c,d); 输出结果为1,1,2,0 为什么 请解析 谢谢 (2)若有定义 float x=1.5;int a=1,b=3,c=2;正确的switch 语句是为什么是 switch(a+b) case1:printf("*\n"); case2+1:printf("**\n");正确 而switch((int)x); case1:printf("*\n"); case2:printf("**\n");为什么不正确呢 请解析 (3) main() int i; for(i=0;i<3;i++) switch(i) case0:printf("%d,i); case2:printf("%d,i); default:printf("%d,i); 输出结果为——请解析 谢谢 (4) main() int x=1,y=0,,a=0,b=0; switch(x) case 1:switch(y) case 0:a++;break; case 1:b++;break; case 2:a++;b++;break; printf("%d %d\n",a,b); 输出结果为什么为21 请解析 谢谢
1.解析:if(a=1) 是将1的值赋给a,然后a=1>0 执行if后面的语句了 。要是你搞糊涂了应该是这个if(a=1)与if(a==1) 后面是关系表达式,前面个只是赋运算。
2 解析:
正确是因为他符合所有语法要求,case 后面是常量表达式,switch(表达式)都满足了,所以正确啊,后面错误的原因在switch((int)x)后面有一个分号。
3.解析:000122,i=0时候,switch内的语句执行了3次,应为没有break,i=1时候,执行了1次,i=2时候执行了2次。
4.解析:x=1时候,外面switch语句从case 1开始执行,case1中的switch使a的值+1了,然后break语句从case1中的switch跳出,在执行外面的switch中的case2,a和b的值又加了1,所以是2 1 参考技术A 如果你想参加 国际c语言混乱代码大赛 ,那么这些代码的混乱程序还太低,但是如果你是想解决你程序中遇到的问题,那么任何人看到这样的代码都会失去继续读下去的耐心. 参考技术B 第一题,if(a=1)出错 应该改成if(a==1) 楼主要分清楚赋值运算符和关系运算符的区别
如果是赋值运算符,意思就是将1赋给a, 然后判断a是否=0,不等0的话执行b=1;c=1;
第二题:搞不懂程序目的是什么,下面的switch也是可以运行的.VC6编译通过.
第三题 000122 原因 case后面没有break.所以在找到对应的case后会一直执行下去.i=0 输出000 ;i=1 输出default 1 ;i=2 输出 22
即为000122
第四题:
main()
int x=1,y=0,a=0,b=0;
switch(x)
case 1:switch(y)
case 0:a++;break;
case 1:b++;break;
case 2:a++;b++;
break;
printf("%d %d\n",a,b);
一样的道理 switch(x)的case1后面没break;所以 switch(x)的case2照样执行.
详细解释下C语言main函数调用过程,以及esp和ebp的作用
参考技术A 程序的开始函数调用比较复杂 建议看操作系统只是相关书籍 以下是简单说明1、操作系统收到执行某程序(文件)信息
2、操作系统识别该文件类型 可执行?
3、加载文件到内存(可能只加载部分)
4、分配数据内存给程序(栈 堆)
5、找到程序入口
6、将程序入口加到新建进程里等待执行
7、执行时与其他函数一样没区别
以上是关于C语言 main的主要内容,如果未能解决你的问题,请参考以下文章