出自《c程序设计语言》 by K&R:

一、导言

二、类型、运算符与表达式

三、控制流

1. 字符输入与输出

getchar()putchar(),输入一个字符、输出一个字符

#include <stdio.h>
#include <stdlib.h> int main(void) {
int c = getchar();
while(c != EOF){
putchar(c); c = getchar();
}
return 0;
}

更简洁的形式

#include <stdio.h>
#include <stdlib.h> int main(void) {
int c;
while((c = getchar()) != EOF){
putchar(c);
}
return 0;
}

输入与输出

dfadkfl
dfadkfl
fopawfjkw
fopawfjkw

2. 字符数组

实现getline函数

3.定义和声明的区别

“定义”表示创建变量或分配存储单元,而“声明”指的是说明变量的性质,并不分配存储单元。

4. ~与!

按位取反 和 逻辑非

#include <stdio.h>
#include <stdlib.h> int main(void) { int a = 0;
int b = !a;
int c = ~a;
printf("%d %d\n", b, c);
return 0;
}

输出:

1 -1

5.整数与字符串的相互转换

  1. atoi (alphanumeric to integer)

int atoi(const char *nptr);//字符串转整数函数,nptr: 要转换的字符串

  1. atol (alphanumeric to long integer)

long int atol(const char *str)

  1. itoa (integer to alphanumeric)

char* itoa(int value,char*string,int radix);//value: 要转换的整数,string: 转换后的字符串,radix: 转换进制数,如2,8,10,16 进制等。

  1. 利用 sprintf() 函数和 sscanf() 函数

ANSI C 规范定义了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6个可以将字符串转换为数字的函数

6. 宏定义: 将替换文本在直接插入到代码

  1. #define的一些注意事项
  • 注意打括号

如果有以下定义:

#define square(x) x*x

那么square(z+1) 将会是 z + 1 * z + 1

正确的定义应为

#define square(x) ((x)*(x))

  • max(a++, b++) 中的a、b都会执行两次自增操作

#define max(A,B) ((A) > (b) ? (A) : (b))

  1. #undef 取消名字的宏定义

  2. ## 用于连接实际参数

#define paste (front, back) front##back

paste(name, 1)将建立记号name1

  1. 条件包含
  • #if:

对其中的表达式求值,如果该表达式不为0,则包含其后的各行,直到遇到#endif、#elif、#else为止

  • defined(名字):

如果该名字已定义,则其值为;否则为0。

  • #ifdef 和 #ifndef 用来测试某个名字是否定义

#ifndef HDR

相当于

#if !defined(HDR)

c程序设计语言 by K&R(一)一些c语言基础知识的更多相关文章

  1. C程序设计语言(K&R) 笔记2

    (1) #include <stdio.h> main(){ int c; while((c = getchar()) != EOF){ putchar(c); } } 注意,因为 != ...

  2. C程序设计语言(K&R) 笔记1

    当作复习... (1)将华氏度 换算成 摄氏度,公式: ℃=(5/9)(̧°F-32) #include <stdio.h> int transformTemprature(int F){ ...

  3. 《C程序设计语言》(K&R)中文高清非扫描件

    <C程序设计语言>(K&R)中文高清非扫描件(带书签目录) 对于某下载东西都要C币的网站无爱了.好不容易找了一个,发出来看会不会帮到别人   附上addr:https://pan. ...

  4. K&R《C语言》书中的一个Bug

    最近在重温K&R的C语言圣经,第二章中的练习题2-2引起了我的注意. 原题是: Write a loop equivalent to the for loop above without us ...

  5. 编程语言教程书该怎么写: 向K&R学习!

    原文地址:Lax Language TutorialsAndrew Binstock 每年在评审Jolt Awards图书的时候,我都会被一些语言教程类图书弄得心力交瘁.从这些年的评审经验来看,这些语 ...

  6. K&R C风格函数

    前些天在看getopt源码, 一种前所未见的函数定义方法 int getopt(nargc, nargv, ostr) int nargc; char * const nargv[]; const c ...

  7. ANSI C 与 K&R C

    C语言由Dennis M.Ritchie在1973年设计和实现.从那以后使用者逐渐增加.到1978年Ritchie和Bell实验室的另一位程序专家Kernighan合写了著名的<TheC Pro ...

  8. 【R语言入门】R语言中的变量与基本数据类型

    说明 在前一篇中,我们介绍了 R 语言和 R Studio 的安装,并简单的介绍了一个示例,接下来让我们由浅入深的学习 R 语言的相关知识. 本篇将主要介绍 R 语言的基本操作.变量和几种基本数据类型 ...

  9. 学习K&R时初学者经常遇到的一个问题——EOF

    学习K&R时初学者经常遇到的一个问题——EOF

  10. 30个深度学习库:按Python、C++、Java、JavaScript、R等10种语言分类

    30个深度学习库:按Python.C++.Java.JavaScript.R等10种语言分类 包括 Python.C++.Java.JavaScript.R.Haskell等在内的一系列编程语言的深度 ...

随机推荐

  1. 4 - 【RocketMQ 系列】CentOS 7.6 安装部署RocketMQ

    五.自启动脚本 1.rocketmq 服务脚本 cd /etc/init.d vim rocketmq 把下面内容填好后 按ESC 再输入 :wq! 保存退出 之后再修改权限 chmod 777 ro ...

  2. 2024-07-13:用go语言,给定一个从0开始的长度为n的整数数组nums和一个从0开始的长度为m的整数数组pattern,其中pattern数组仅包含整数-1、0和1。 一个子数组nums[i.

    2024-07-13:用go语言,给定一个从0开始的长度为n的整数数组nums和一个从0开始的长度为m的整数数组pattern,其中pattern数组仅包含整数-1.0和1. 一个子数组nums[i. ...

  3. Grafana Loki查询加速:如何在不添加资源的前提下提升查询速度

    Grafana Loki查询加速:如何在不添加资源的前提下提升查询速度 来自Grafana Loki query acceleration: How we sped up queries withou ...

  4. Swift开发基础05-可选项

    可选项定义 可选项,一般也叫可选类型,它允许将值设置为nil 在类型名称后面加个问号? 来定义一个可选项 var name: String? = "Jack" name = nil ...

  5. mysql 删除数据表报错 表删除时 Cannot delete or update a parent row: a foreign key constraint fails 异常处理

    mysql 删除数据表报错 表删除时 Cannot delete or update a parent row: a foreign key constraint fails 异常处理 MySQL报错 ...

  6. 3分钟带你搞定Spring Boot中Schedule

    一.背景介绍 在实际的业务开发过程中,我们经常会需要定时任务来帮助我们完成一些工作,例如每天早上 6 点生成销售报表.每晚 23 点清理脏数据等等. 如果你当前使用的是 SpringBoot 来开发项 ...

  7. 使用 useLazyFetch 进行异步数据获取

    title: 使用 useLazyFetch 进行异步数据获取 date: 2024/7/20 updated: 2024/7/20 author: cmdragon excerpt: 摘要:&quo ...

  8. [rCore学习笔记 017]实现批处理操作系统

    写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 本章目 ...

  9. 基于 ChatGPT 的聊天软件合集打包分享

      「基于 ChatGPT 的聊天软件合集打包」 链接:https://pan.quark.cn/s/ef1f5e9c48e4 BotGem(原名AMA) 官网:https://botgem.com/ ...

  10. LeetCode 上1769号 面试编程题,python编程

    原题地址: https://leetcode-cn.com/problems/minimum-number-of-operations-to-move-all-balls-to-each-box/ - ...