c语言 day01

C语言学习体系

第一季:C语言语法

基本上大学一个学期学的就是C语言语法方面;



 

第二季:C语言在Linux下的应用

 



第三季:利用Arduino进行开发

未完待续...

 




 

第一季:C语言语法

第一个程序

编译型语言与解释型语言

C语言属于编译型语言,编译型语言还有汇编语言等;

编译过程: C语言 ---> 汇编语言 --->机器语言,最后由CPU执行;

其他高级语言如:Java语言属于解释型语言

解释过程:Java语言 ---> 字节码--->解释器, 最后由CPU执行;

由此可以看出

编译型语言比解释型语言的执行效率高;但是解释型语言凭着中间的“解释器”实现了跨平台的特点;

C语言的灵魂“指针”

后续学习补充...

第一个程序

#include 
int main()
{
  printf("Hello world!\n");
  return 0;
}

执行结果如下图所示:

 

 


补充:编码环境

可以使用Dev-c++、Clion等;

这里简单说明一下自己搭建环境出现的几个问题:

  1. Dev-c++,在下载后,第一次编译是无法编译的,这里需要自己这是一个编译器,之后才可以编译代码并运行;(推荐使用)

步骤:

第一步,找到“工具”,然后点击编译选项;

 

 

第二步,设置编译器,在小加号中进行添加;

 

 

  1. Clion第一次使用,需要进行一些插件工具的配置,才能进行代码的编译;

    详细教程:浏览下面博客文章

    Clion安装Toolchains配置make、C/C++compiler、debugger无法找到_nekoCon的博客-CSDN博客

    注:Cygwin GDB 的安装一定选择8.xx的版本吗,为避免后期出现问题;

     

     



 

打印(printf)

打印就是打印(输出)一个指定内容;使用printf函数;

代码如下:

#include
int main (){
printf("
   *      *
*    *      *
  *         *
       * ");
return 0;
}

运行结果:

 

 

可以看出是character引起的报错;

更改后的代码:

#include
int main (){
printf("\n\
   *      *\n\
*           *\n\
  *         *\n\
       * \n");
return 0;
}

运行结果:

 

 

原因:

C语言一串长字符串想要换行输出需要转义字符行 "\n" ;

\n\的作用是将一个长字符串换行打印;两行属于一段文字;\是起连接作用的;


C语言的转义字符

 

 



变量

变量的意义就是确定一个目标并提供存放的空间。变量名即给创建的变量提供一个名字(代号),方便使用;

变量名的命名规则

  1. 变量名只能是英文字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成;如abc_123;

  2. 第一个字母必须是字母或者下划线开头;

  3. 变量名区分大小写; 如:ABC ≠ abc;

  4. 不能使用关键字命名;


关键字

C语言中一些关键字

 

 


声明变量

数据类型 变量名

如 int a; char b;float c; double d;

代码演示

代码如下:

#include 
int main(){
   int a ;
   long b;
   float c;
   double  d;
   a = 520;
   b = 'Z';
   c = 3.14;
   d = 3.1415926;
   printf("1 %d\n",a);
   printf("i’m %c\n",b);
   printf("圆周率精确的两位小数点 %.2f\n",c);
   printf("圆周率 %9.7f\n",d);
   return 0;
}

运行结果

%d 指将后面参数作为整型数据打印出来;

%c 指将参数作为字符型数据打印出来;

%f 表示浮点型 ; %9.7f 指一个总位数为9的浮点型数据,.7指精确到7位。



常量和宏定义

常量

常量**用来赋值给定义的变量;

 

 

定义符号常量

格式: #define 标识符 常量 ;

代码如下

#include  
#define URL "http://www.xiaomi.com"
#define NAME "小米"
#define YEAR 2010
int main(){
printf("%s成立于%d年 \n",NAME,YEAR);
printf("%s的域名是%s",NAME,URL);
return 0;
}

运行结果

 

 

\0 空字符在字符串的作用

编译器在读取一个字符串时,如何判断一个字符串的大小?读取的时候在什么时间结束?

\0 空字符的作用就是解决这个问题。当编译器读取到这个空字符时就表示这一个字符串结束了;

 

 



数据类型

数据类型

 

 

基本数据类型

 

 

整形数据类型大小

short int > int > long int > long long int

查看数据所占字节,代码如下;

#include 
int main(){
printf("int = %d 字节\n",sizeof(int));
printf("short int = %d 字节\n",sizeof(short));
printf("long int = %d 字节\n",sizeof(long));
printf("long long int = %d 字节\n",sizeof(long long));
printf("char = %d 字节\n",sizeof(char));
printf("float = %d 字节\n",sizeof(float));
printf("double = %d 字节\n",sizeof(double));
printf("long double = %d 字节\n",sizeof(long double));

return 0;
}

运行结果

 

 


数据范围

即一个数据类型所能表示的数据大小;

代码如下

#include 
#include
int main(){
int size = pow(2,32)-1;
printf("intsize = %d\n",size) ;

return 0;
}

编译错误:

 

 

运行结果:

 

 

问题,数据溢出(overflow);原因,int类型默认是有符号类型数据;改为无符号数据类型即可解决这个问题;

 

更改为无符号数据类型后代码运行如下图

 

 

出现问题,结果不是我们想要的;原因无符号整型变量的转义字符需要有 %u ;

更改后代码

#include 
#include
int main(){
unsigned int size = pow(2,32)-1;
printf("intsize = %u\n",size) ;

return 0;
}

运行结果

 

 

 


常见基本数据类型范围

 

 

 

 



字符和字符串

字符

了解ASCII字符表

查看字符Z的ASCII码值

#include 
int main(){
	char a = 'Z';
	printf("%c的ASCII码值为%d",a,a);
	
	return 0;
}

运行结果:

 

 

注意 unsigned对字符串定义的影响;


字符串

格式

char 变量名 [数量];

变量名[索引号]=字符;

声明字符串

char name[5];

给字符串赋值:

name[0]='z';

name[1]='h';

name[2]='a';

name[3]='n';

name[4]='g';

char name[5]={'z','h','a','n','g'};

代码书写可以分为用数组和字符串直接赋值

#include  
int main(){
	char name[6]={'z','h','a','n','g','\0'};
	char sex[] = "boy";
	printf("name=%s \n",name);
	printf("sex=%s",sex);
	
	return 0;
}

运行结果:

 

 

注:

  1. 如果利用数组进行字符串赋值,字符串数量太长,[]的字符数量也可以不写;

  2. 使用字符串进行赋值,最后一定要加上\0,来表示字符串结束;

---未完待续---

 

posted @ 2021-05-12 16:34  noerro  阅读(73)  评论(0)    收藏  举报