///ovo///-创新互联
在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。其一般形式为:
表达式1, 表达式2
其求值过程是分别求两个表达式的值,并以表达式2(即最右边的一个表达式)的值作为整个逗号表达式的值。
#include
int main()
{
int i ,a;
i =(a=2*3, a*5), a+6;
printf("%d", i);
return 0;
}
输出结果:30.
原因分析:
优先级排列中,括号>加减乘除>赋值>逗号。
所以当前这个等式的运算应该是:
step1:a = 2*3; //结果a=6
step2:计算a*5; //结果是30【注意:此时a的值是不变的,仍旧是6!!!】
step3:i = (a=2*3, a*5); //得到i值:30.【不去执行a+6的原因在于:因为赋值符号 = 的优先级比逗号的高,所以直接把30赋值给了 i。 】
如果该等式变成了 i=(a=2*3,a*5,a+6);
则输出结果为12.
step1:a = 2*3; //结果a=6
step2:计算a*5; //结果是30
step3:计算a+6;//结果是12
step4:将最右边的一个等式a+6的值赋给i
————————————————
比如x+=y实际代表的表达式为:x=x+y。
x*=y代表x=x*y
x/=y代表x=x/y
x-=y代表x=x-y
——————————————————————————————————————————————————-
由双引号串起来的一串字符就是字符串,双引号里面什么都可以写。
字符串的结束标志是一个\0的转义字符。
计算字符串长度的时候不包含\0。
字符是用英文单引号括起来,里面写一个英文字母或者数组。
如何来定义一个字符变量呢,下面就是了
char a;
那如果我想给这个字符变量a赋值,那就应该下面这种方式(单引号括起来,里面只能放一个字符)
a = 'A';
a = '2';
a = 'a';
—————————————————————————
C语言中语句的分类
>表达式语句
>函数调用语句
>控制语句
>复合语句
>空语句
用流程圈来表示程序的流程
>起止框、处理框、判断框、输入/输出框、流程线
—————————————————————————
库函数
用户自定义函数
组成c语言程序的基本单位是函数
—————————————————————————
函数的声明:
返回值类型 函数名称 (函数的参数)
函数的调用
函数的定义
—————————————————————————
const int和const double都是指常变量(可看成常量)
—————————————————————————
格式:
函数首部(函数头)
返回值类型 函数名(类型 形式参数1,类型 形式参教2)
{
一组语句
return 表达式;
}
(函数体)
—————————————————————————
函数的调用:转向、传参、执行、返回、继续
函数调用的基本形式
函数名(实际参数表);
eg.
bill= totalCost (number, price) ;
实参与形参之问是单向值传递,也称单向值拷贝。
实参与形参个数、对应数据类型完全一致。
—————————————————————————
当一个函数直接或间接地调用了自身,就成了递归函数。
递归的两个要素:
1.找到递推表达式
2.存在递归终止条件,即回归条件
—————————————————————————
变量的作用域与存储类型
变量的生命周期
变量的四种存储类型
静态局部变量的特性
变量的生命周期:变量从创建到撤消的这段时间
变量的存储类型:变量如何存储在计算机中,它决定了变量的生命周期
四种存储类型:
自动(auto)
外部(extern)
静态 (static):重点
寄存器 (register)
自动:
^自动体现在:
进入语句块时自动申请内存,退出时自动释放内存
标准定义格式:
auto 类型名 变量名;
例:auto int a
•缺省的存储类型
·局部变量不初始化时,值不确定 (VS2010)
(之前的形式参数变量是自动变量)
静态:
标准定义格式
static 类型名 变量名;
例:static int a=8:
静态变量定义在函数外部
静态全局变量
静态变量定义在函数內部
静态局部变量
程序编译时分配内存地址,开始运行时实际占用内存,直到程序结束时生命期结束。
•程序开始运行时被时初始化(默认为0),以后不再进行初始化。
————————————————————————————————————————————
%d左对齐,输出变量的所有数字;
%4d右对齐,宽度为4,左边填充空格,
当变量的实际宽度大于4时,输出变量的所有数字;
%04d与%4d的唯一区别就是左边填充0。
%-4d意思是数字占四位、左对齐。
```c
比如,
1.以%d,%4d,%04d,输出12时,结果是:
12
两个空格12
0012
2.以%d,%4d,%04d,输出123时,结果是:
123
一个空格123
0123
3.以%d,%4d,%04d,输出1234时,结果是:
1234
1234
1234
4.以%d,%4d,%04d,输出12345时,结果是:
12345
12345
12345
——————————————————————————————————————————————————————————
printf("%f",fVal);//这是浮点默认输出格式,小数点保留6位
printf("%.1f",fVal);//.1是说明,小数点保留1位,对其后的数据进行四舍五入
printf("%.2f",fVal);//.2是说明,小数点保留2位,对其后的数据进行四舍五入,你想保留几位,就用点几
printf("%10f",fVal);//输出宽度为10个字符,右对齐,前补空格,小数点保留6位
printf("%10.2f",fVal);//输出宽度为10个字符,右对齐,前补空格,小数点保留2位
——————————————————————————————————————————————————————————
二、小数计数法
(1)1.23456e+002 ,这个数的表示方式就是,e+002 表示10 的2次方,这里的数就是123.456。
——————————————————————————————————————————————————————
5、打印字符
打印字符类型,用%c表示
例如输入如下代码
char ch='A';
printf("The number of %c% is %d.\n",ch ,ch );
1
2
输出结果
The number of A is 65.
————————————————————————————————————————————————————————————————
一、字符输入函数getchar:
getchar函数是从标准的输入设备(如键盘)上输入一个字符,不带任何参数,格式为:
getchar():
getchar函数将输入的第一个字符作为函数的返回值,通常使用这个函数时,将函数的返回值赋予一个字符变量或者整型变量。
#include
main()
{ char ch;
ch = getchar();
printf("%c %d\n",ch,ch);
printf("%c %d\n",ch-32,ch-32);
return 0;
}
程序运行时输入 abc。
得到的结果是:
a 97
A 65
--------------------------------
Process exited after 3.084 seconds with return value 0
请按任意键继续. . .
在getchar函数中只把输入的第一个字符作为函数的返回值,所以在代码中输入了abc三个字符,只返回了a的值。
在执行代码时,先以字符的形式输出ch,然后进行数据的强制转换,再将ch以整型的形式输出。字符型数据
向整型数据转换时,实质上是将字符型数据转换成与该字符相对应的十进制ASCII码值。a的ASCII码值是97,
将a转换后就输出了97。A的ASCII值是65,输出的便是65。质上是将字符型数据转换成与该字符相对应的十
进制ASCII码值。a的ASCII码值是97,将a转换后就输出了97。A的ASCII值是65,输出的便是65。
二、字符输出函数putchar:
putchar函数是向标准输出设备(屏幕)上输出一个字符的C语言标准函数,格式为:
putchar(ch);
ch可以是变量、常量,转义字符或表达式。数据类型可以是字符型或整型。当ch是整型数据时,输出的是与其相对应的ASCII码值。
#include
main()
{ int p;
char q; //此时定义的是字符变量,不是字符串,所以只能将一个字符的值赋予q
p=98;
q='a';
putchar(p);
printf("\n");
putchar(q);
return 0;
}
执行的结果就是:
b
a
请按任意键继续. . .
————————————————
char a,b,c,d;
a=getchar();
b=getchar();
scanf("%c%c",&c,&d);
putchar(a);
putchar(b);
printf("%c,%c",c,d);
return 0;
————————————————————————————————————————————————————
在printf中,当变量长度比数据格式大时,printf与用"%d"数据格式输入完全相同,即原样输出。
2)数据格式大于变量长度
如printf用 %8d 打印 n ,输出为 (!)(!)(!)12345 。
如printf用 %-8d 打印 n ,输出为 12345(!)(!)(!) 。
如printf用 %8s 打印 arr ,输出为 (!)(!)(!)Hello
如printf用 %-8s 打印 arr ,输出为 Hello(!)(!)(!)
————————————————
"%(数字)d"(或者其他转换字符)此数字在scanf中表示 大字段宽度
。意思为,你不能输入字段比此数字还大的。即输入到达大字段宽度时,
超过宽度后面的将不再作为输入内容(相当于作废),在大宽度内的为输入内容。
-------------------------------------------------------------
C++中也可以用科学计数法,比如:
0.01 = 1e-2 (注意e前面的那个是数字1)
100 = 1e2
-------------------------------------------------------------
%d整型输出,%ld长整型输出,
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,
%u以十进制数输出unsigned型数据(无符号数)。
%c用来输出一个字符,
%s用来输出一个字符串,
%f用来输出实数,以小数形式输出,
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。
————————————————
除法运算符“/”。二元运算符,具有左结合性。参与运算的量均为整型时,结果为整型,舍去小数。如果运算量中有一个为实型,结果为双精度实型。
例如:
5/2=2,1/2=0
5/2.0=2.5
求余运算符“%”,二元运算符,具有左结合性。参与运算的量均为整型。求余运算的结果等于两个数相除后的余数。
例如:
5%2=1,1%2=1
5%2.0和5.0%2的结果是语法错误
---------------------------------------------------------------
C语言float和double的区别?
1.精度不一样,float是单精度,double是双精度;
2.表示小数的范围不一样,double能表示的范围比float大;
3.double在内存中,占8个字节,float在内存中,占4个字节。
注:%f默认保留6位小数,不足位以0补齐,超过六位按四舍五入的方法保留6位,若想输出指定位数,
在格式化输出语句中表示变量的字母及%中间的部分控制输出位数,小数点后是小数位数
double 和 float 的区别是 double 精度高,有效数字 16 位,float 精度 7 位。但 double 消耗内存是 float 的两倍,
double 的运算速度比 float 慢得多,能用单精度时不要用双精度(以省内存,加快运算速度)。
------------------------------------------------------------------------
c语言源文件经过编译后,生成文件的后缀是“.obj”。
C语言源文件后缀名是“.c”,编译生成的文件后缀名是“.obj”,连接后可执行文件的后缀名是“.exe”。
C语言创建程序的步骤:
编辑:就是创建和修改C程序的源代码-我们编写的程序称为源代码。
编译:就是将源代码转换为机器语言。编译器的输出结果成为目标代码,存放它们的文件称为目标文件。
扩展名为.o或者.obj。(该部分编译是指汇编器编译汇编语言或者编译器编译高级语言)
链接:链接器将源代码由编译器产生的各种模块组合起来,再从C语言提供的程序库中添加必要的代码模块,
将它们组成一个可执行的文件。在windows下扩展名为.exe,Unix下无扩展名。
执行:运行程序。
C语言源程序经过C语言编译程序编译之后,生成一个后缀为“.obj”的二进制文件(称为目标文件),
最后还要由称为“连接程序”(link)的软件,把此“.obj”文件与c语言提供的各种库函数连接在一起,
生成一个后缀“.exe”的可执行文件。显然C语言不能立即执行。
目标代码尽管已经是机器指令,但是还不能运行,因为目标程序还没有解决函数调用问题,需要将各个目标程序与
库函数连接,才能形成完整的可执行程序。
----------------------------------------------------------------
格式控制说明符:
%d:输入一个十进制整数
%i:输入一个整数,可以是十进制或 带前缀0的八进制整数 或 带前缀0x的十六进制整数
%o:以八进制形式输入一个整数(带不带前缀都行)
%x:以十六进制 (带不带前缀都行)
%u:输入一个无符号十进制整数
%c:输入一个字符
%s:输入一个字符串
%f:输入单精度实数,小数或指数形式输入
%lf:输入双精度实数
%p:输入一个指针(地址)
————————————————
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享文章:///ovo///-创新互联
链接地址:http://myzitong.com/article/ghgeg.html