本文目录一览:
- 1、c语言代码求解 ret = scanf("%[^:]:%[^:]:%[^:\n]", a, b, c);
- 2、C语言调试里面的add,ret,mov,xor,lea,call,是什么意思
- 3、c语言中ret!=1什么意思呀
- 4、C语言程序中 ret = scanf( %d ,&man);ret是什么意思
- 5、C语言问题,求大神解释以下程序ret,getchar有什么作用,最好能够详细点,谢谢,我是小白,初学者。,。
- 6、c语言函数的return谁能仔细给我解释一下?
c语言代码求解 ret = scanf("%[^:]:%[^:]:%[^:\n]", a, b, c);
这是scanf语句输入格式说明
格式[]表示输入的字符是中括号中copy包含的几种字符,比如%[A-Z]就是仅接收大写字母A~Z的输入其他一概忽略
那么如果只接收冒号就要写百%[:]
在符号前面加^,比如%[^:]就是除了冒号其他字符都可以输入,唯独忽略冒号,可输入的字符是除去冒号的字符集补集。度
C语言调试里面的add,ret,mov,xor,lea,call,是什么意思
add:addition,加法指令,实现两个操作数的加法
ret:return,返回指令,返回主程序
mov:move,数据传送指令,将源操作数放到目的操作数
xor:逻辑异或指令,将两个操作数进行异或逻辑运算,相异而或,当操作数对应位相同时结果为1,不同时为0
lea:装入有效地址指令,将源操作数的有效地址传送至目的操作数保存
call:子程序调用指令,程序运行到此语句时,调用call后的子程序执行。
c语言中ret!=1什么意思呀
ret != 1表示判断变量ret是否等于1。如果相等,则结果为0,否则结果为1。
通常用在if语句或条件运算符中。如:
1、if语句
int a, ret;
scanf("%d", ret);
if(ret != 1) // 如果ret不等于1,则将ret的值赋值给变量a
a=ret;
2、条件运算符
int a, ret;
scanf("%d", ret);
a = ret!=1 ? ret : 0; // 如果ret不等于1,则将ret的值赋值给变量a,否则a=0
C语言程序中 ret = scanf( %d ,&man);ret是什么意思
scanf函数成功输入的数值个数 我们可以通过判断if(scanf("%d",man)==1)判断是否输入成功
C语言问题,求大神解释以下程序ret,getchar有什么作用,最好能够详细点,谢谢,我是小白,初学者。,。
ret这里是用来接收scanf语句的返回值的。
scanf是个读取输入数据的语句,返回值是成功读取的数据个数。例如ret=scanf("%d,%d,a,b");这句,如果成功读取了a和b,那么scanf会返回2表示读入了两个数据。
下面的循环就是表示如果读取的不是两个数,就重新提示用户输入a和b。
至于getchar()是读入一个字符,getchar()可以读入包括换行符在内的ASCII码字符,用户在输入完a和b后一般会按一次回车,这个getchar就是用来读取这个回车符的。
c语言函数的return谁能仔细给我解释一下?
事实上 无论是return ; 还是return X;
在汇编上都只有一条指令:ret(retn)
只不过对于return X; 会在 执行ret指令之前对eax寄存器赋值:
如果是return 0 ; 可能编译器会这样做:
xor eax,eax
ret
其他情况类似
然后从C语言角度讲
对于返回类型为void的函数
函数体内可以出现return;语句来表示结束本函数的执行
这个时候eax还是有值的,因为 函数返回类型是void,因此在调用该函数的地方不可能会去用该函数的返回值,也就意味着该返回值是毫无意义的
楼主想问的 单独的return;语句,对于这行代码,一般只用在返回类型为void的函数体内
若出现在非void返回类型的函数体内,那么返回值是隐含在寄存器eax中的
然后对于有返回值的函数来说
return后面是肯定需要跟一个值的
这个值是被送入寄存器eax带出来的~
我说再多 也许还是会有人不信(本人玩逆向的,这一切信不信那是你们的事,我只能把事实告诉你们,我也只能做到这样了)
下面直接上代码上图:
(微软任何C/C++编译器、VC/VS这些、都支持编译此代码,没有警告,没有错误)
注:主函数不主函数的return都是没有区别的
但是main函数很特别,特别在它有好多种写法,标准C真正的主函数返回类型是int
有2个参数,一个是命令行参数个数,一个是命令行参数
windows下面的主函数可以有三个参数,前两个参数跟标准C一样,第三个参数是环境变量
这些参数都是由mainCRTStartup函数传进来的,而mainCRTStartup再往上你还要研究的话那。。。。那。。。那。。。我只能告诉你这些参数都是要操作系统传进来的吧~~~
我们编程的时候,也许有些菜鸟会把main写成如下形式:void main()
其实这种写法在编译之后都是会被转化成标准写法的底楼说的 不带返回值系统默认返回0这完全是不靠谱的,因为事实当中返回值都是被寄存器eax带出去的,而对于main是必须要返回值的,菜鸟写了没返回值的main在编译之前就被编译器替换掉了,哪来的默认返回0的说法?何来默认?系统会把你写的main换成 标准main形式!标准main会在底下返回0
主函数return的值只有你在其他进程中创建子进程,子进程的返回状态被父进程接收的值就是main的返回值,所以,在你写的程序不需要被其他进程创建的话,main的返回值是无关紧要的