这几天家里实在是太多客人了,环境太嘈杂。

一、运算符

  • 使用整数除以整数只能得到整数
  • 学习比较运算符号才知道,c99之后才增加的布尔类型,而且布尔类型的本质是整型数字0与1(0假,1真)
  • 自增与自减运算符只能对变量有效,对常量无效,(可以理解为常量本来就不可以改)(或者理解为这两个运算符是对空间操作)
  • &:相同为1,不同为0
  • |:有1为1,有0为0
  • ^:不同为1,相同为0
  • ~:1的0,0的1

下面是利用运算符写的一个开关案例

#include <stdio.h>
#define FLAG_VISIBLE 0x1 //0001
#define FLAG_TRANSPARENT 0x2 //0010
#define FLAG_RESIZE 0x4 //0100
int main() {int window_flags = FLAG_VISIBLE | FLAG_RESIZE;//这样就可以得到一个总开关0110int visible = FLAG_VISIBLE & window_flags;//0000int resize = FLAG_RESIZE & window_flags;//0100//这样就可以拿到2个开关,一个是0000,一个是0100
}
  • 与<<是移位运算符。(<<1就是×2,>>1就是/2)

  • 优先级记不清楚的话,多使用()

二、条件分支语句

  • C99之后才引入一个_Bool,msvc中虽然只支持C90,但是也支持_Bool哟<stdbool.h>,定义了一个宏bool,只能为1或者0,所以使用bool类型时候,也就是_Bool,也就是0与1。
  • 哪怕是一条语句也最好写上括号,不然嵌套多的时候,不方便观察

三、循环语句

  • 案例一
#include <stdbool.h>
#include <stdio.h>
int main() {#define ADD '+'
#define SUB '-'
#define MULTIPLY '*'
#define DIVIDE '/'
#define REM '%'int left;int right;char operator;char command;do {printf("Please input an expression: \n");scanf("%d %c %d", &left, &operator, &right);int result;switch (operator) {case ADD:result = left + right;break;case SUB:result = left - right;break;case MULTIPLY:result = left * right;break;case DIVIDE:result = left / right;break;case REM:result = left % right;break;default:printf("Unsupported operation: %c\n", operator);return 1;}printf("Result: %d\n", result);printf("Again? Type 'q' for quit: \n");// puts("Again? Type 'q' for quit: ");// scanf("%c", &command);getchar();//为了把回车读走command = getchar();printf("%d\n", command);} while (command != 'q');
}
  • 案例二
int sumij = 0;
for (int i = 0, j = 0; i <= 100 && j <= 100; ++i, ++j) {sumij += i * (i + j);
}
printf("sumij: %d\n", sumij);
  • 案例三
// goto
int i = 0;
begin:
printf("%d\n", i);
if (i++ < 5) {goto begin;
}

四、函数

  • 参数列表如果是没有参数传递的话,写void
//这里的void是表示这个函数是不用传递参数进去的,如果是调用时候传递,会报错的
void EmptyParamList(void){}//这个函数也是不需要传递参数,但是在调用的时候,如果传递参数进去的话,不会报错的
void ALLOWParamList(){}
  • 函数原型
#include <stdio.h>
/** 1. 函数名* 2. 函数返回值类型,如果没写,默认为 int* 3. 函数参数列表,参数类型,和参数的顺序,参数形参名不重要*///原型甚至不用写函数名
int Add(int, int);
void EmptyParamList(void);
int main(void) {puts("");EmptyParamList();int result = Add(1, 2);printf("result of add: %d\n", result);return 0;
}
//定义时候并不用写类型
int Add(a,b){return a+b;
}
void EmptyParamList(void) {puts("Hello");
}

变量的

  • 作用域有{}块作用域、函数作用域、函数原型()中的原型作用域、文件作用域
  • 变量也有类型滴,平时我们写的int value = 0;其实是auto int value = 0;表示value的类型是自动的,而装载的值为int型
  • 当一个变量内省为static,例如static int value = 0;这个时候这个变量就是全局变量,或者称为文件变量,作用域全局,内存不会因函数退出而销毁
  // 静态变量// 1. 作用域全局,内存不会因函数退出而销毁// 2. int 初值默认为 0static int static_var;// 自动变量// 1. 函数、块作用域,随着函数和块退出而销毁// 2. 没有默认初值int non_static_var;
  • 函数的变长参数
#include <stdio.h>
#include <stdarg.h>
void HandleVarargs(int arg_count, ...) {// 1. 定义 va_list 用于获取我们变长参数va_list args;// 2. 开始遍历va_start(args, arg_count);for (int i = 0; i < arg_count; ++i) {// 3. 取出对应参数,(va_list, type)int arg = va_arg(args, int);printf("%d: %d\n", i, arg);}// 4. 结束遍历va_end(args);
}
int main(void) {printf("Hello World\n");HandleVarargs(4, 1,2,3.0,4);return 0;
}

五、乱七八糟

  • 如果是只输出一个字符串并换行的话,可以使用puts
  • 输入可以使用scanf但是需要格式化,使用getchar()就不用
  • c99之前不能这样写for(int i = 0; i < 5; i++),只能把int i拿出去,不能在里面声明定义
  • 少用goto语法
  • 使用<stdlib.h>可以或者生成随机数函数rand(),可以配合传入时间生成真正的种子
  • 使用<time.h>里面time(NULL)
  • 使用if,else之类的,哪怕是因为只有一条语句而没有写{},也是块作用域

C语言基础之运算符、分支语句、循环语句、函数相关推荐

  1. java基础:【分支、循环语句】swith csae 分支语句

    前言 正文 分支流程控制语句 if  ... else 语法: 1)if(布尔值|逻辑|比较表达式){ 语句块 }else{ 语句块 } 2)if(表达式){ }else if(表达式){ } . . ...

  2. 2018.12.18运算符,分支结构(循环),异常处理,函数

    1复习 <!DOCTYPE html><html><head> <meta charset="UTF-8"> <title&g ...

  3. C语言全网最详细的分支和循环语句讲解

    文章目录 前言 一.什么是语句? 二.分支语句(选择结构) 1.if语句 1.1 悬空else 1.2 if书写形式的对比 1.3 小小练习巩固一下 2.switch语句 2.1 在switch语句中 ...

  4. C语言中阶第一篇:分支和循环语句透析,包含getchar和scanf的详细介绍(本篇循环只到while)

    业精于勤荒于嬉,行成于思毁于随. 在笔者初阶的文章里,已经介绍过分支和循环语句,不过由于是初阶,所以并不细致,今天我们正式打开了中阶的大门,开始一步一步的深入C语言的学习. C语言是结构化的程序设计语 ...

  5. php中可以实现分支,PHP中的分支及循环语句

    这次实践的都是PHP7的语法. 感觉是以前的5差别不是那么大,只是希望越来越快吧. $looking = isset($_GET['title']) || isset($_GET['author']) ...

  6. Python基础笔记_Day03_while、for循环语句、range

    Day03_while.for循环语句.range 03.01_Python语言基础(循环语句)(掌握) 03.02_Python语言基础(while概述)(掌握) 03.03_Python语言基础( ...

  7. python里、能用分支结构写出循环的算法吗_python变量运算符分支结构循环结构及例题...

    第一周总结复习 python的[官方网站](http://python.org) ##变量 ''' 1.变量的作用:变量是数据的载体 2.变量的命名:字母数字下划线开头,不能用数字开头 不能用关键字, ...

  8. python 动态执行条件判断_【人生苦短,我学 Python】基础篇——条件判断与循环语句(Day12)_不积跬步,无以至千里!-CSDN博客...

    原文作者:AI 菌 原文标题:[人生苦短,我学 Python]基础篇--条件判断与循环语句(Day12) 发布时间:2021-02-08 23:17:06 写在前面:大家好!我是[AI 菌],一枚爱弹 ...

  9. 【Linux学习笔记④】——Shell程序设计【变量 输入与输出 条件表达式 判断语句 循环语句 Shell函数】

    ⌛️ 文章目录 一.Shell 概述 二.Shell 脚本的定义与执行 2.1 Shell 脚本的定义 2.2 Shell 脚本的执行 三.Shell 变量 3.1 用户自定义变量 3.2 环境变量 ...

  10. Java判断语句 循环语句

    主题: 判断语句 循环语句 一.判断语句 1.单分支 1 if(条件){ 2 3 //此处插入代码,表示if中的条件成立执行的语句 4 } 注意: 1.条件 必须 boolean 2.if只带 一行代 ...

最新文章

  1. QT官方第三方开源工具
  2. Java中可变长参数的使用及注意事项
  3. 浏览器的内核及版本的判断
  4. 像@Transactional一样利用注解自定义aop切片
  5. NDK集成libjpeg和libpng
  6. git pull忽略指定文件_Git忽略提交规则
  7. 【Servlet】Servlet声明配置
  8. Spring整合Hibernate(2)
  9. 不超过20位的小数正则_盘点贵州省的GDP增长:跃居全国20位,超过了两个难以超越的省份...
  10. 多用途管理仪表板UI模板,把枯燥变得简单
  11. Rushcrm:CRM系统中的进销存管理
  12. Java字节码浅析(二)
  13. ADMM算法求解一个简单的例子
  14. 斯坦福计算机科学博士研究方向,美国人工智能专业Top10名校推荐
  15. 数学基础知识总结 —— 12. 求极限的重要工具「洛必达法则」
  16. 苹果摄像头黑屏_品牌借势:苹果12发布会,王守义十三香领衔,杜蕾斯再出手...
  17. 0基础快速开发口袋网盘小程序
  18. 如何在Google表格中直接使用Google翻译
  19. Wiener Filtering
  20. 中央监控计算机系统,计算机监控系统设计

热门文章

  1. “私厨”会代表新生活方式的到来吗?初创公司“爱大厨”就想派厨师上门为忙碌的人类做菜 | 36氪...
  2. 微信小程序支付:下单账号与支付账号不一致
  3. 2023社工报名时间及考试时间是什么时候
  4. VS中的设置和快捷键
  5. 我的考研总结(总分396,工科)
  6. 《Unreal大象无形》读书笔记
  7. C#复习之委托(Delegate)和事件(Event)
  8. python yield 惰性计算,用于scrapy中(美食杰爬虫为例)
  9. 几天体会......
  10. java微信app支付服务端v3代码