c程序设计语言 by K&R(一)一些c语言基础知识
出自《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.整数与字符串的相互转换
- atoi (alphanumeric to integer)
int atoi(const char *nptr);//字符串转整数函数,nptr: 要转换的字符串
- atol (alphanumeric to long integer)
long int atol(const char *str)
- itoa (integer to alphanumeric)
char* itoa(int value,char*string,int radix);//value: 要转换的整数,string: 转换后的字符串,radix: 转换进制数,如2,8,10,16 进制等。
- 利用 sprintf() 函数和 sscanf() 函数
ANSI C 规范定义了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6个可以将字符串转换为数字的函数
6. 宏定义: 将替换文本在直接插入到代码
- #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))
#undef 取消名字的宏定义
## 用于连接实际参数
#define paste (front, back) front##back
paste(name, 1)将建立记号name1
- 条件包含
- #if:
对其中的表达式求值,如果该表达式不为0,则包含其后的各行,直到遇到#endif、#elif、#else为止

- defined(名字):
如果该名字已定义,则其值为;否则为0。

- #ifdef 和 #ifndef 用来测试某个名字是否定义
#ifndef HDR
相当于
#if !defined(HDR)
c程序设计语言 by K&R(一)一些c语言基础知识的更多相关文章
- C程序设计语言(K&R) 笔记2
(1) #include <stdio.h> main(){ int c; while((c = getchar()) != EOF){ putchar(c); } } 注意,因为 != ...
- C程序设计语言(K&R) 笔记1
当作复习... (1)将华氏度 换算成 摄氏度,公式: ℃=(5/9)(̧°F-32) #include <stdio.h> int transformTemprature(int F){ ...
- 《C程序设计语言》(K&R)中文高清非扫描件
<C程序设计语言>(K&R)中文高清非扫描件(带书签目录) 对于某下载东西都要C币的网站无爱了.好不容易找了一个,发出来看会不会帮到别人 附上addr:https://pan. ...
- K&R《C语言》书中的一个Bug
最近在重温K&R的C语言圣经,第二章中的练习题2-2引起了我的注意. 原题是: Write a loop equivalent to the for loop above without us ...
- 编程语言教程书该怎么写: 向K&R学习!
原文地址:Lax Language TutorialsAndrew Binstock 每年在评审Jolt Awards图书的时候,我都会被一些语言教程类图书弄得心力交瘁.从这些年的评审经验来看,这些语 ...
- K&R C风格函数
前些天在看getopt源码, 一种前所未见的函数定义方法 int getopt(nargc, nargv, ostr) int nargc; char * const nargv[]; const c ...
- ANSI C 与 K&R C
C语言由Dennis M.Ritchie在1973年设计和实现.从那以后使用者逐渐增加.到1978年Ritchie和Bell实验室的另一位程序专家Kernighan合写了著名的<TheC Pro ...
- 【R语言入门】R语言中的变量与基本数据类型
说明 在前一篇中,我们介绍了 R 语言和 R Studio 的安装,并简单的介绍了一个示例,接下来让我们由浅入深的学习 R 语言的相关知识. 本篇将主要介绍 R 语言的基本操作.变量和几种基本数据类型 ...
- 学习K&R时初学者经常遇到的一个问题——EOF
学习K&R时初学者经常遇到的一个问题——EOF
- 30个深度学习库:按Python、C++、Java、JavaScript、R等10种语言分类
30个深度学习库:按Python.C++.Java.JavaScript.R等10种语言分类 包括 Python.C++.Java.JavaScript.R.Haskell等在内的一系列编程语言的深度 ...
随机推荐
- 微信小程序热门选题
一.大体实现思路 微信小程序,现在是非常热门的,基于微信生态开发的.现在很多计算机毕业的同学,都会选择微信小程序作为毕业设计 小程序端通常都是展示数据给用户去看的,大多数情况下,这些数据不是写死的,而 ...
- Day 9 - 线段树
线段树 引入 线段树是算法竞赛中常用的用来维护 区间信息 的数据结构. 线段树可以在 \(O(\log N)\) 的时间复杂度内实现单点修改.区间修改.区间查询(区间求和,求区间最大值,求区间最小值) ...
- LLM并行训练6-激活优化
前置知识 Activation 激活指的是一些在fp时计算得到的临时tensor, 会用于bp时的计算. 如果能在fp计算后把临时tensor缓存下来就可以加速bp, 缺点在于某些激活会占用大量显存. ...
- 双指针 & 双向搜索
双指针 根据人类直觉这个东西需要满足单调性,所以预处理的时候大概率需要排序. 好像常与二分结合使用? 可以用在序列.链表(存储位置)或者树.图上(存储结点). 或者用于其他算法(eg:单调队列.差分) ...
- vs 常用的调试技巧
本地调试,一般打断点, 然后下一步,或者步入,或者运行到上一步. 有专用的对战窗口. 条件断点,输入当前变量的名称,然后打印变量值变量名和对战的一些信息,当然也可以选择进入断点后是否进一步运行 线程调 ...
- .NET周刊【7月第3期 2024-07-21】
国内文章 给博客园的寄语 https://www.cnblogs.com/jingc/p/18307859 作者是一名39岁的大龄C#开发程序员,对博客园的艰难处境深感触动,并购买会员支持.回顾他与博 ...
- .NET 轻量级 命令行工具 CSharpRepl
前言 当我们需要快速测试代码片段时,常见的做法是启动Visual Studio或使用在线代码编辑器.然而,Visual Studio的启动可能较为缓慢且占用较多系统资源,而在线编辑器则可能遇到语法支持 ...
- 再读vue
app.vue是项目的主组件,页面的入口文件 main.js是项目的入口文件 vue.config.js是vue-cli的配置文件//用这个配置代理,端口号 例如 const { defineConf ...
- Redis持久化RDB与AOF介绍
就是将内存中的数据通过rdb/aof进行持久化写入硬盘中 rdb就是进行持久化的快照 在指定的时间间隔内,执行数据集的时间点快照.这个快照文件称为(dump.rdb)RDB文件,Redis DataB ...
- [SDR] GNU Radio 系列教程 —— GNU Radio TX PDU (发送数据包操作)的基础知识(超全)
目录 1 PDU 概述 2 Demo 详解 2.1 Random PDU Generator 2.2 Async CRC32 2.3 Protocol Formatter (Async) 2.4 将 ...