# C语言从基础学起—-xuld版高手成长手记

java，然则只要您实在是准备学好编程的，那必须从C发轫学。

## 先是章 总括机基本原理

### ② 、计算机组成

1. 核心处理器（CPU）

2. 存款和储蓄器（如内部存款和储蓄器卡、硬盘）

3. 输入输出设备（如鼠标、键盘、显示屏）

CPU

### ④ 、数据格式

#### 2. 仓库储存四个文件

‘A’，那样全数文件都得以用数字保存。

ASCII, UTF-8, Unicode, GB2312  。

## 第叁章 C语言基础

### 一、准备

dev-cpp。初学者能够试着运维如下 hello world

``````#include<stdio.h>
int main(){
printf("hello world");
return 0;
}
``````

### 贰 、基础项目

char 8 ASCII 字符
short 16 16位整数
int 32 32位整数
long 32 32位整数
long long 64 64位整数
float 32 单精度小数
double 64 双精度小数

unsigned 能够收获无符版本。

> 怎么样表示无符63个人整数？

unsigned long long

> 怎么着表示有符16位整数？

short

### 三、常量

0x开头的十六进制整数 0xff int

> 常量 .33333 是哪些项目

double

### 四、变量

int 类型的变量，就足以读写内部存款和储蓄器中的有些3一人大小的区域。

``````类型 变量名;
``````

``````short a;
``````

### 五、表达式

#### 1. 一贯赋值

``````变量名 = 表达式
``````

> 如何声澳优个 int 类型的变量然后赋值为 2？

``````int a;
a = 2;
``````

> 如何证明二个 char 类型的变量，第2个变量赋值为
‘a’，第三个变量赋值为率先个变量的值。

``````char c1;
c1 = 'a';

char c2;
c2 = c1;
``````

#### 2. 算术运算

+(加)、-(减)、*(乘)、/(除)、%(余)。大家必要关切的是项目标成形。

1. 要是计算的表达式有1个是 double，则赶回 double

2. 纵然计算的表明式有多个是 float，则赶回 float

3. 即便总结的表明式有二个是 unsigned long long，则赶回 unsigned long
long

4. 若果总计的表明式有2个是 long long，则赶回 long long

5. 假若总括的表达式有1个是 unsigned int，则赶回 unsigned int

6. 剩余意况总体赶回 int

> float 类型变量 + double 类型变量重临什么项目？

double

>3 + 5 =?

8

>4.7 +5.3 =?

10.0 (注意10是不对的）

> 8/7 = ?

1 (因为只可以取得int,所以利用舍尾法)

> 3.2 % 2.6 =?

= 3.2 + ceil(3.2 / 2.6) * 2.6 = 3.2 + 1 * 2.6 =  0.6

+ – 也可用作单目运算使用，分别代表正、负。如：

``````int a;
a = 1;
a = -a;
``````

!=(不等于)

#### 4. 位运算

|(位或) ^(位异或) ~(位反，那是单目运算)

1. 就算总计的表明式有2个是 unsigned long long，则赶回 unsigned long
long

2. 只要总计的表达式有三个是 long long，则赶回 long long

3. 借使总括的表达式有3个是 unsigned int，则赶回 unsigned int

4. 结余情形一切再次来到 int

0000 0001 << 1 = 0000 0010     二进制全部位数左移 一个人，左侧多余的去除，右侧缺乏的补 0
0000 0001 >> 1 = 0000 0000     二进制全数位数右移 一位，右侧多余的删除，左侧缺乏的，假如是无符就补 0，不然补符号位。

0000 0001 & 0000 0001 = 0000 0001

0000 0001 | 0000 0001 = 0000 0001

0000 0001 ^ 0000 0001 = 0000 0000

~0000 0001=1111 1110

>3 << 2 =?

2x = 1 << x

a << y = a * (1 << y) = a * 2y

-a = ~a + 1

~a = -a – 1

> ~77 = ?

-78

> 1<<8 = ?

256

> 怎样总计1个 int 第 6 位 二进制是 1 依然   0

> 如何判断贰个 int 第⑩ 和 第 3 位 二进制有3个是 1

> 怎么样判定二个 int 第玖 和 第 3 位 二进制都以 1

> 怎么着设置2个 int 的第 3 位为 1

> 如何设置2个 int 的第 3 位为 0

> 输入七个 int，怎么样输出那么些 int的二进制格式。如 输入 2，输出
00000000 00000000 00000000 00000010

#### 5. 布尔运算

1 && 1 = 1      固然操作数都非零，则&&重回 1，不然再次回到0

0 || 0 = 0        假使操作数都零，则||重回 0，不然再次回到1

!0 = 1            如若操作数非零，则!重临 0，否则重回1

#### 6.其余运算

>1 + 2 * 5 = ?

11

>1 + +1 =?

=1 + (+1) = 1 + 1 = 2

> (1 << 3) + 2 = ?

10

#### 7. 类型转换

``````(新类型)表达式
``````

> 定义声可瑞康（Karicare）个 double ,然后转为 short

``````double a;
short c;
c = (short)a;
``````

#### 8. 指针

char*,假诺不明确其针对性的数据的莫过于类型，则足以选取void*来表示。

``````&变量名
``````

``````*指针 = 表达式;
``````

> 声Bellamy（Bellamy）个 int

1。

``````int a;

``````

******待续******
{"ft_lang_label":"__label__zh","ft_lang_prob":0.91579044,"math_prob":0.9973269,"size":5780,"snap":"2019-26-2019-30","text_gpt3_token_len":5069,"char_repetition_ratio":0.09712604,"word_repetition_ratio":0.02118003,"special_character_ratio":0.3195502,"punctuation_ratio":0.0800464,"nsfw_num_words":0,"has_unicode_error":false,"math_prob_llama3":0.95582545,"pos_list":[0],"im_url_duplicate_count":[null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2019-07-18T15:34:39Z\",\"WARC-Record-ID\":\"<urn:uuid:4bb152ac-0bf0-4d2f-b065-80a8545f75b7>\",\"Content-Length\":\"28810\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:b891398b-0ddd-4335-ba42-60eb191468d5>\",\"WARC-Concurrent-To\":\"<urn:uuid:89c73b70-3fae-4d85-835c-e0cf6e9ef801>\",\"WARC-IP-Address\":\"45.192.72.114\",\"WARC-Target-URI\":\"https://www.italblends.com/cyy/3483.html\",\"WARC-Payload-Digest\":\"sha1:AMPM4LQ5S754JJE4ALJZSQVRZ3ZEASF3\",\"WARC-Block-Digest\":\"sha1:EHQK5OPVII2LDPWOCJ5F4YBKKEYRCW22\",\"WARC-Identified-Payload-Type\":\"text/html\",\"warc_filename\":\"/cc_download/warc_2019/CC-MAIN-2019-30/CC-MAIN-2019-30_segments_1563195525659.27_warc_CC-MAIN-20190718145614-20190718171614-00260.warc.gz\"}"}