初识C语言——阶段性小结(一)

都是一些大致概括性知识 让我们对c有一个初步认识,

没有详细展开赘述。

一、什么是C语言

 二、第一个C语言程序

三、数据类型

四、变量、常量 字符串+转义字符+注释

一、什么是C语言

C语言是一门通用计算机编程语言,广泛应用于底层开发.........

我们将编程比作是一栋大厦,c是地基,要想大厦屹立不倒,地基切忌操之过急!

二、第一个C语言程序

对于大多数人而言是"hello world"

但我希望

#include<stdio.h>
int main() {
	printf("我们是最棒的!\n");
	return 0;
}

 这是一种自我激励,也是鞭策。

送给大家一句话:欲戴其冠,必承其重!

三、数据类型

char        //字符数据类型              

short       //短整型                    

int         //整形                            

long        //长整型                  

long long   //更长的整形            

float       //单精度浮点数             

double      //双精度浮点数            
//C语言有没有字符串类型? 

C 语言虽然没有字符串类型,但是 C语言提是存在字符串这个概念的,也就是字符串常量。

1、char 字符类型

注:表示字符要加单引号   eg:char =  'z'

#include<stdio.h>
int main() {
 char w = 'z';
 printf("%c\n", w);
 return 0;
}

 

 

上述代码只是一个很简单的例子

那么下面一个呢? 

#include<stdio.h>
int main() {
 char w = 'zjt';
 printf("%c\n", w);
 return 0;
}

还是输出 “z”吗?

 

 因为在x86平台上,数据是以little-endian 的形式排列的,低位字节放在内存的低地址,高位字节放在内存的高地址。我们看'1234',从左到右从1到4,然而在计算机中存放的格式是从0x04到0x01,就是说'1234'的低位4存放在计算机的内存低地址位,'1234'的高位1存放在内存的高地址位,所以当把'1234'给变量a时,系统把内存中的地址中存放的4给a,其余的全部不要了。

ASCII码的打印

#include<stdio.h>
int main() {
	char w = 98;
	printf("%c\n", w);
	return 0;
}

 上述是数字->字符

那么字符到数字呢?

#include<stdio.h>
int main() {
	int w = 'a';
	printf("%c\n", w);
	return 0;
}

 2、整型

处理不同数据的时候需要不同的变量范围。

各个类型的大小都不同

#include<stdio.h>
int main() {
	printf("%d\n", sizeof(char));
	printf("%d\n", sizeof(int));
	printf("%d\n", sizeof(long));
	printf("%d\n", sizeof(long long));
	printf("%d\n", sizeof(float));
	printf("%d\n", sizeof(double));
	printf("%d\n", sizeof(long double));
}

 至于整形的其他本质不同  博主会在后续的文章中探讨  这里只是对自己一个月自学的简单小结。

3.浮点型

常见 float与double后期还会学习其他的浮点类型 。在这不做过多阐述

二者的区别主要是精度表示不一样float的类型至少能表示六位有效数字,double类型至少能表示视为有效数字,但若不加特殊说明,c编译器会直接把float类型转化成double类型。

#include<stdio.h>
int main()
{
	float a = 5.5;
	double b = 6.1;
	printf("%f\n", a);
	printf("%f\n", b);
	return 0; 
}

 

 通过上面代码我们可以了解到,无论是float 还是double,小数点后面数字位数都相等 

但是取几位有效数字怎么做呢?

#include<stdio.h>
int main()
{
	float a = 2.2;
	double b = 2.4;
	printf("%.3f\n", b);
	printf("%f\n", a);
	printf("%.2f\n", a);
	printf("%.1f\n", a);
	printf("%.3f\n", a);
	printf("%.4f\n", a);

	return 0;
}

 

 可以很清晰的看出“.Xf “那么小数点后就是几位有效数字

用%e打印指数记数法的浮点数

#include<stdio.h>
int main() {
	double a = 18232.321;
	printf("%e\n", a);
	return 0;


}


 

 浮点型还有许多其他知识,待博主详细学完后再来更新,目前知识大致的写一下。

 四、变量、常量 字符串+转义字符+注释

变量的定义:

char ch = 'w';

int weight = 120;

int salary = 20000;

变量的分类有局部变量,全局变量。

#include <stdio.h>
int global = 2019;//全局变量
int main()
{
    int local = 2018;//局部变量//下面定义的global会不会有问题?
    int global = 2020;//局部变量
    printf("global = %d\n", global);
    return 0;
}

 上面的局部变量global变量的定义其实没有什么问题的!

当局部变量和全局变量同名的时候,局部变量优先使用

常量

有如下四种:1、字面常量   eg:3.14

                                                     100

                                                      ‘abc’   等

                      2、const修饰的常变量

  

#include<stdio.h>
int main() {
	int a = 10;
	printf("%d\n", a);
	a = 20;
	printf("%d\n", a);
	return 0;

 

#include<stdio.h>
int main( ){
	const  a = 10;
	printf("%d\n", a);
	a = 20;
	printf("%d\n", a);
	return 0; 
}

第二个代码无法编译 

因为有const 修饰变量指的是 虽然它还是变量,但是它的值是一个常量,无法被更改。(个人理解)

                3、//#define的标识符常量          

         

#include<stdio.h>
#define MAX 100

int main() {
	printf("%d\n", MAX);
	return 0;
}

           4、 //枚举常量演示

             

enum Sex
{
	//枚举这种类型的可能取值 - 就是枚举常量
	MALE,
	FEMALE,
	SECRET
};
#include<stdio.h>
int main() {
    printf("%d\n", MALE);
    printf("%d\n", FEMALE);
    printf("%d\n", SECRET);
	return 0;
}

 //注:枚举常量的默认是从0开始,依次向下递增1的

字符串:用双引号引起来  eg:”aj“    ”sad“   ”dada“等

注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容(即不用敲)

#include<stdio.h>
int main() {
	char zjt[] = "abcd";//字符串1
	char dy[] = { 'a','b','c','d' };//字符串2
	char dsg[] = { 'a','b','c','d','\0' };//字符串3
	char dagg[5]= { 'a','b','c','d' };//字符串4
	printf("%s\n%s\n%s\n%s\n", zjt, dy, dagg,dsg);
	return 0;
}

 

 我们来分析一下上述代码,仔细观察一下,字符串2与字符串3只相差一个‘\0'   

在字符串中'\0'表示的是结束输出,所以字符串2在输出abcd后继续在缓存区输出,直到找到’\0'为止。

而其他三种的正确表示方法都是我目前所了解的 后续如果还有其他方法会在未来的博客中持续更新。

为了让读者加深一步理解——我们可以通过测字符串的长度分析

#include<stdio.h>
#include<string.h>
int main() {
	char zjt[] = "abcd";//字符串1
	char dy[] = { 'a','b','c','d' };//字符串2
	char dsg[] = { 'a','b','c','d','\0' };//字符串3
	char dagg[5]= { 'a','b','c','d' };//字符串4
	printf("%s\n%s\n%s\n%s\n", zjt, dy, dagg,dsg);
	printf("%d\n%d\n%d\n", strlen(zjt),strlen(dy),strlen(dsg));

	return 0;
}

 

#include<stdio.h>
int main() {
	char arr1[] = "abc";//代码1
	char arr2[] = { 'a','b','c' };//代码2
	printf("%s\n%s\n", arr1, arr2);
	return 0;
}

我们可以通过监视器观察到 代码1虽然没有敲‘\0'      但实际上是输入了\0的

通过这个就大致可以理解上面字符串长度了

转义字符:

转义字符顾名思义就是转变意思。

转义字符 释义

\? 在书写连续多个问号时使用,防止他们被解析成三字母词

\' 用于表示字符常量

' \“ 用于表示一个字符串内部的双引号 \\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。 \a 警告字符,蜂鸣

\b 退格符

\f 进纸符

\n 换行

\r 回车

\t 水平制表符

\v 垂直制表符

\ddd

ddd表示1~3个八进制的数字。 如: \130 X

\xdd dd表示2个十六进制数字。 如: \x30 0

我们可以做一个趣味性的题目

测试:c:\test\628\test.c.ca\nasm的长度

上代码

#include<stdio.h>
#include<string.h>
int main() {
	char arr[] = "c:\test\628\test.c.ca\nasm";
		printf("%d\n", strlen(arr));
	return 0;

}

 在测量字节长度是转义字符算一个字节

注释:1. 代码中有不需要的代码可以直接删除,也可以注释掉

           2. 代码中有些代码比较难懂,可以加一下注释文字

C语言风格的注释 /*xxxxxx*/ 缺陷:不能嵌套注释

C++风格的注释 //xxxxxxxx 可以注释一行也可以注释多行

第一次写这种博客,还有许多不足之处,但创作不易,还请大家多多支持!

  • 14
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天少点debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值