本文目录一览:
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语句输入格式说明。
格式[]
表示输入的字符是中括号中包含的几种字符,比如%[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
,在调用该函数的地方不可能会去用该函数的返回值,因此该返回值是毫无意义的。 - 若出现在非
void
返回类型的函数体内,那么返回值是隐含在寄存器eax
中的。 - 对于有返回值的函数来说,
return
后面是肯定需要跟一个值的,这个值是被送入寄存器eax
带出来的。 下面直接上代码:
#include <stdio.h>
void func1() {
return; // 合法,函数返回类型为 void
}
int func2() {
return 42; // 返回值 42 被放入 eax
}
int main() {
printf("func2 返回值: %d\n", func2());
return 0;
}
注:主函数不主函数的return
都是没有区别的。
但是main
函数很特别,标准C真正的主函数返回类型是int
,有两个参数,一个是命令行参数个数,一个是命令行参数。
Windows下面的主函数可以有三个参数,前两个参数跟标准C一样,第三个参数是环境变量。
这些参数都是由mainCRTStartup
函数传进来的,而mainCRTStartup
再往上你还要研究的话,那我只能告诉你这些参数都是要操作系统传进来的吧。
我们编程的时候,也许有些菜鸟会把main
写成如下形式:void main()
,其实这种写法在编译之后都是会被转化成标准写法的。
底楼说的“不带返回值系统默认返回0”这完全是不靠谱的,因为事实当中返回值都是被寄存器eax
带出去的,而对于main
是必须要返回值的,菜鸟写了没返回值的main
在编译之前就被编译器替换掉了,哪来的默认返回0的说法?何来默认?系统会把你写的main
换成标准写法!
标准main
会在底下返回0。
主函数return
的值只有你在其他进程中创建子进程,子进程的返回状态被父进程接收的值就是main
的返回值,所以,在你写的程序不需要被其他进程创建的话,main
的返回值是无关紧要的。