栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言基础

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言基础

c语言基础(一) 第一个c语言程序
#include    //双斜杠为注释,头部文件比有
int main()            //main函数必有,程序必有
{                        //(),{},[],""必须成对出现,且是英语符号
	printf("hellow cn");   //语句一定要以分号结束
	return 0;
}

关键字

用于定义变量或者类型

类型 变量名;

char 、short、int 、long 、float、double、
struct、union、enum 、signed、unsigned、void

register、static、const、auto、extern

if 、else 、break、continue、for 、while、do、switch case、goto、default

sizeof、typedef、volatile

char 字符型 用来定义字符型变量 占一个字节 char ch=‘a’;

short 短整型 用来定义短整型变量,占连个字节 short a=11;-32768 - —32767

int 整形 定义整形变量 在32 位系统下占4 个字节,在16 平台下占2 个字节 int a=13;-20 亿—20 亿

long 长整形 定义长整型变量,在32 位系统下占4 个字节,long int a=45;

float 单浮点型, 定义的变量是单浮点型的实数,占4 个字节 float a=1.2f;

double 双浮点型,定义的变量是双浮点型的实数,占8 个字节 double a=3.4;

struct 定义结构体类型

union 与共用体(联合体)相关

enum 与枚举类型相关

signed 有符号的意思,正负,在定义char 、整型(short int long) 数据的时候用signed 修饰,默认是已经加上修饰了,即定义整形数据时默认是有符号的数据。

unsigned 无符号的意思,在定义char 、整型(short 、int、long) 数据的时候用unsigned 修饰,修饰定义数据时,数据只能是正数和0;

void 不能定义变量,没有void 类型的变量,void 是用来修饰函数的参数或者返回值

register 是寄存器的意思,用register 修饰的变量是寄存器变量

static 静态,可以修饰全局变量、局部变量、函数

const 常量,修饰的变量是只读的,不能修改它的值

auto 关键字现在基本不用

extern 是外部的意思,一般用于函数和全局变量的声明

sizeof 使用来测变量、数组的占用存储空间的大小(字节数)

typedef 重命名相关的关键字

volatile 易改变的意思,定义的变量,是易改变的,即告诉cpu 每次用volatile 变量的时候,重新去内存中取保证用的是最新的值,而不是寄存器中的备份

变量命名规则:在c 语言中给变量和函数起名的时候,由字母、数字、下划线构成
必须以字母或者下滑线开头

数据类型

char 、short int 、int、long int、float、double

字符与字符串;‘a’是字符,”a“是字符串,双引号的字符串自动的添加一个结束标志位’’,即“a”包含两个字符‘a’和’’

指数形式:123e3 代表123*10 的三次方,123e-3代表123*10-3次方,

float与double:不以f 结尾的常量是double 类型,以f 结尾的常量(如3.14f)是float 类型

格式化输出字符
%d 十进制有符号整数             %u 十进制无符号整数
%x, 以十六进制表示的整数        %o 以八进制表示的整数
%f float 型浮点数              %lf double 型浮点数
%e 指数形式的浮点数
%s 字符串						%c 单个字符
%p 指针的值
%3d:要求宽度为3 位,如果不足3 位,前面空格补齐;如果足够3 位,此语句无效
%03d:要求宽度为3 位,如果不足3 位,前面0 补齐;如果足够3 位,此语句无效
%-3d: 要求宽度为3 位,如果不足3 位,后面空格补齐;如果足够3 位,此语句无效
%.2f:小数点后只保留2 位
数据类型的自动转换

数据转换的方向:内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换

当表达式中出现了char 、short int 、int 类型中的一种或者多种,没有其他类型了
参加运算的成员全部变成int 类型的参加运算,结果也是int 类型的

当表达式中出现了带小数点的实数,参加运算的成员全部变成double 类型的参加运算,结果也是double 型。

当表达式中有有符号数也有无符号数,参加运算的成员变成无符号数参加运算结果也是无符
号数.(表达式中无实数)

在赋值语句中等号右边的类型自动转换为等号左边的类型

数据类型的强制转换

通过类型转换运算来实现,把表达式的运算结果强制转换成类型说明符所表示的类型:(类型说明符) (表达式)

(float)a; // 把a 的值转换为float型
(double)(x+y); // 把x+y 的结果值转换为double型

#include
typedef short int int16;
int main()

{
	char a = 'j';  //char a='12'是不对的12占两个字符
	char b[] = "caixukun";   //定义字符串
	int16 c = -14;
	float d = 4.3f;
	double e = -4.3;      //默认定义的是有符号数
	unsigned int f = 12;
	printf("a=%c,%dn", a,sizeof(a));
	printf("b=%s,%dn",b,sizeof(b));      //9个字节包含结尾的’
	printf("c=%d,%dn", c, sizeof(c));
	printf("c=%f,%dn", d, sizeof(d));    //4字节
	printf("c=%lf,%dn", e, sizeof(e));    //8字节
	printf("%dn",5/2);   //5/2的实际类型为int
	printf("%lfn", 5.2/2);   //5.2/2的实际类型为double
	printf("%dn", (c + f));   //值是-2
	if (c+f<0)
	{
		printf("c和f的和是负数");
	}
	else
	{
		printf("c和f的和是正数");   //if语句输出是正数,说明表达式最后得到一个无符号数
	}
	return 0;
}
运算符

单目运算符:参加运算的操作数只有一个

++自增运算符给变量值+1;–自减运算符给变量值减一

#include
int main()
{
	int a;
	int num;
	a = 1;
	//num = (a++) + (a++) + (a++);
	//printf("%dn", a); 结果是4,a的数值变化是2,3,4
	//printf("%dn",num); 结果是3,(a++)先去出a的值,先取值1+1+1,后++的运算
	
	
	printf("%dn%dn%dn", (a++), (a++),(a++));//3,2,1
	//printf("%dn%dn%dn", (++a), (++a),(++a));4,4,4
	return 0;
}

双目运算符:即参加运算的操作数有两个例如+ - * /

三目运算符:即参加运算的操作数有3 个;(a)?(b):©,a条件为真,提供b的结果,否则提供c的结果

算数运算符:+ - * / %(取余) += -= *= /= %=

a*=2 就是a=a*2

关系运算符:>、<、= =、>=、<=、!= (不等于)

逻辑运算符:&& 逻辑与;|| 逻辑或;! 逻辑非

位运算符:&按位与,| 按位或,~ 按位取反,^ 按位异或

>>右移

逻辑右移高位补0,低位溢出;

算数右移高位补符号位,低位溢出(有符号数

左移<< 高位溢出,低位补0

正数在内存中以原码形式存放,负数在内存中以补码形式存放
正数的原码=反码=补码
负数的反码是将原码中,除符号位(最高位)以外,每一位取反。负数的反码+1 就是补码。
如int型数值2的占4个字节,原码为
0000 0000 0000 0000 0000 0000 0000 0010   (2)
-2的反码为
1111 1111 1111 1111 1111 1111 1111 1101 
-2的补码为
1111 1111 1111 1111 1111 1111 1111 1110    (ff ff ff fe)

#include
int main()
{
	
	printf("%xn", 2);   //2
	printf("%xn", -2);  // ff ff ff fe

	return 0;
}


优先级

if语句

几种形式

形式1

if(判断语句)

{

语句A;

}

形式2

if(判断语句)

{

语句A;

}

else

{

语句B;

}

形式3

if(判断语句)

{

语句A;

}

else if(判断语句)

{

语句B;

}

… //可多个else if

else

{

语句n

}

在使用if判断的时候,从上往下判断,一旦有成立的表达式,执行对应的复合语句,
下边的就不再判断了,各个条件判断是互斥的

#include
int main()
{
	int a = 4;
	if (a>=5)
	{
		printf("a是大于等于5的数");
	}
	else if (a>3)
	{
		printf("a大于3,小于5");
	}
	else
	{
		printf("小于等于3");
	}
	return 0;
}

也可以if里面嵌套if

int main()
{
	int a = 4;
	if (a<=5)
	{
		if (a==3)
		{
			printf("a等于3");
		}
		else if (a==4)
		{
			printf("a=4");

		}
	}
	 
	else
	{
		printf("a大于5");
	}
	return 0;
}
switch 语句

switch(表达式)//表达式只能是字符型或整型的(short int int long int)

{
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
default:语句3;break;
}

#include
int main()
{
	int a = 1;
	switch (a)
	{
	case 5:
		printf("a是5");
		break;
	case 2:
		printf("a是2");
		break;
	case 1:
		printf("a是1");
		break;
	default:
		printf("不知道a是几");
		break;
	}
	return 0;
for循环

形式

for(表达式1;表达式2;表达式3)
{//复合语句,循环体
}

执行表达式1,表达式1 只执行一次,

表达式2,每次循环前执行表达式2,判断表达式为真时才执行循环体

执行完循环体后,执行表达式3

#include
int main()    //1到5的和
{
	int i, sum = 0;
	for (i = 0; i <= 5; i++)
	{ 
		sum = sum + i;
	}
	printf("%dn", sum);
}

for循环嵌套

#include
int main()
{ 
	int i, j;
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%dt", j, i, j * i);
		}
		printf("n");
	}
	return 0;
}
break与continue
#include
int main()
{
	int i, sum = 0;
	for (i = 0; i <= 5; i++)
	{ 
		if (i == 2)
		{
			//break;  //中断循环  
			continue; //中断本次循环,开始下一循环

		}
		printf("%dn", i);//break语句i只输出到1输出(0,1),continue语句会跳过输出2,输出(0,1,3,4,5)
	}
}
while循环

形式1
while(条件表达式)
{//循环体,复合语句
}

#include
int main()    //1到100的和
{
	int i = 1, sum=0;
	while (i<=100)
	{
		sum = sum + i;
		i++;
	}
	printf("%d", sum);

}

形式2

do
do{//循环体
}while(条件表达式);

#include
int main()
{
	int i = 1, sum=0;
	do
	{
		sum = sum + i;
		i++;
	} while (i <= 100);
	printf("%d", sum);
}

区别:do执行循环体在判断是否执行第二次循环体,while先判断

goto跳转
#include
int main()
{
	printf("1n");
	printf("2n");
	goto tiaozhuan;  //跳过打印4,5
	printf("4n");
	printf("5n");
    tiaozhuan:
	printf("6n");  
	printf("7n");
	printf("8n");

}
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1037433.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号