c语言笔记1 输入和输出注意事项,常量 变量 static

news2025/1/11 15:08:38

输出:printf

c的编译器不会检测格式串中转换说明的数量和数据类型是否和后面的变量一致。转换说明的数据类型与实际数据类型不一致时,产生无意义的值。

int 类型的变量length,值为9,输出时将类型写为float或double,输出值变为0.00,毫无意义。 

%f格式:用来输出实数(单精度和双精度实数),以小数形式输出。

输入:scanf

输入的变量名前加&符号,一次输入多个变量时,格式中间是空格,输入时就用空格隔开变量,输入格式中间是,时,输入两个变量中间就用,隔开。

scanf输入格式中%f是单精度浮点型,%lf是双精度浮点型。 

常量

常量分为符号常量和直接常量。

符号常量需要先定义(声明),再使用,通常采用宏或const关键字定义,相当于给常量取了一个别名。

宏常量语法格式:

#define 标识符  替换列表      //注意不用;结束

#define PI  3.1415926      

#include <stdio.h>
#define PI 3.1415926    //不用分号结束
int main()
{	
	printf("%f",PI);
}

const定义常量:

#include <stdio.h>
int main()
{	
	const double PI = 3.1415926;
	printf("%f",PI);
}

变量:

全局变量和局部变量

在函数外定义的变量叫全局变量。

#include <stdio.h>
int i = 1;      //全局变量i
int add(int a,int b)
{
	int result = a + b;      //局部变量result
	return result;
}
int main()
{	
	int m = add(2,3);       //result在此处不可以,从新定义一个局部变量
	i++;
	printf("%d\n",m);
	printf("%d",i);
}

static 关键字

static可用于局部变量和全局变量,称为静态局部变量和静态全局变量。

1、静态局部变量:可以使得局部变量具有静态存储期限,即这样的局部变量在整个程序执行期间都拥有存储空间,因而变量的值一直存在。

静态局部变量仍然是局部变量,只是其存储空间不会在函数返回时被回收。

#include <stdio.h>
int add()
{
	int data1 = 0;
	static int data2 = 1;
	
	data1 = data1 + 2;
	data2 = data2 + 4;
	
	return (data1 + data2);
}
int main()
{
	int i = 1;
	printf("NO.%d:",i);	
	printf("%d\n",add());  //data1 = 2, data2 = 5, 2+5=7
	
	i = 2;
	printf("NO.%d:",i);	
	printf("%d\n",add());  //data1 = 2 ,data2 = 9,2+9=11;  data1被重写赋值0,
                           //data2是静态的,内存没有回收仍然是5
	
	i = 3;
	printf("NO.%d:",i);	
	printf("%d\n",add());		
}

运行结果

 2、静态全局变量

静态全局变量作用域是从变量声明的那处开始直到本文件的末尾。

存储期限是在内存空间分配之后,一直保留到程序结束。但是静态全局变量只在声明它的文件内可见,对同一文件内的函数可见,对其他文件中的函数不可见,能避免被其它文件访问,实现信息隐藏。

字符处理

#include <stdio.h>
#include <ctype.h>   //字符处理需添加的头文件
int main()
{
	char ch1 = 'a';
	char ch2 = 'B';
	char ch3 = toupper(ch1);
	char ch4 = tolower(ch2);	

	printf("ch3 = %c\n",ch3);	
	printf("ch4 = %c",ch4);		
}

字符输入和输出:

#include <stdio.h>
#include <ctype.h>   //字符处理需添加的头文件
int main()
{
	char ch1;
	scanf("%c",&ch1);
	printf("ch1 = %c",ch1);	
}

 输出:      a
                ch1 = a

字符输入和输出用到格式:%c,如果想强制scanf函数在读入字符时自动跳过若干空白字符,可以在%c前面加上一个空格实现。

#include <stdio.h>
#include <ctype.h>   //字符处理需添加的头文件
int main()
{
	char ch1;
	scanf(" %c",&ch1);
	printf("ch1 = %c",ch1);	
}

 scanf的格式中%C前面添加了空格,所以输入:空格空格a,输出是a。

  c语言还提供另外一对函数:getchar()和putchar()函数,实现对单独的一个字符进行读写操作。

#include <stdio.h>
#include <ctype.h>   //字符处理需添加的头文件
int main()
{
	char ch1;
//	scanf(" %c",&ch1);
//	printf("ch1 = %c",ch1);	
	ch1 = getchar();        //输入一个字符,返回输入的字符
	putchar(ch1);           //输出一个字符  
}

 getchar函数不支持格式化输入,要想在读入字符时,跳过若干空白字符,通常借助循环结构实现。

bool类型

bool类型在C99之后才有,值是true和false,并且存储成int类型,true记录成1,false记录成0.

使用bool类型需要添加<stdbool.h>头文件。

#include <stdio.h>
#include <stdbool.h>    //bool类型需要添加这个头文件
int main()
{
	
	bool b = 1;
	bool m = 6 > 5;
	bool n = (6==5);
	
	printf("b = %d\n",b);       
	printf("m = %d\n",m);  
	printf("n = %d\n",n);       
}

逻辑运算

逻辑运算是至左向右的元素,如果左边的结果已经能够决定结果了,就不会做右边的运算。

a == 6 && b==1;

对于&&运算,左边的是false,右边的就不运算了。

对于||运算,左边的是true,右边的就不运算了。

#include <stdio.h>
int main()
{	
	int a = -1;
	if(a > 0 && a++ > 1){
		printf("OK\n"); 
	}
	printf("a = %d\n",a);       
}

因为a>0是false,所以if语句的判断结果一定是false,a++>1无需执行,所以a = -1。

运算符优先级:

所有关系运算低于算术运算,高于赋值运算。

7 >= 3+4;   //3+4=7,7>=7结果是1

6>5>4   //6>5结果是1 ,1>4结果是0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型

InstructGPT&#xff1a;遵循人类反馈指令来训练语言模型《Training language models to follow instructions with human feedback》论文地址&#xff1a;https://arxiv.org/pdf/2203.02155.pdf 相关博客 【自然语言处理】【ChatGPT系列】InstructGPT&#xff1a;遵循人类反馈…

联想小新pro13 卡顿解决办法

问题 本人电脑型号是 联想小新 pro13 2020 i7 才用了两年多&#xff0c;变得巨卡无比 ctlshiftesc打开任务管理器 cpu利用率才30%多 打字就一顿一顿的出结果 浏览网页也卡的掉帧&#xff0c;更不用说打游戏了 真的很无语&#xff0c;重装了系统也没啥用 思路 在网上搜了一圈…

Linux 网络基础

目录 一.网络 1.重新看待计算机结构 2.几种网络 二.协议 1.协议分层 2.OSI七层模式 3.TCI/IP五层(或四层)模型 三.网络传输 1.网络和操作系统之间的关系 2.网络传输流程图 3.数据包封装和应用 前言&#xff1a;这一篇大体介绍一下网络的一些基础知识。 一.网络 1.重…

do while语句

上次讲了while语句&#xff0c;这次讲一下do while语句。 do...while 循环是 while 循环的变体。在检查while()条件是否为真之前&#xff0c;该循环首先会执行一次do{}之内的语句&#xff0c;然后在while()内检查条件是否为真&#xff0c;如果条件为真的话&#xff0c;就会重复…

王卫点赞友商?北京快递保卫战,顺丰彰显大格局大气度

当下&#xff0c;随着全面放开&#xff0c;国内新冠疫情到了另一个严峻的拐点时刻&#xff0c;特别是北京&#xff0c;正日益逼近感染高峰期。 作为社会生活的毛细血管&#xff0c;快递物流企业们在当下的新冠疫情大背景下上演了一幕幕的鲜活的画面&#xff0c;快递行业市场新…

如何磁盘格式化?分享格式化U盘的3个方法

格式化可以有效管理硬盘&#xff0c;在一定程度上能保证磁盘的性能和使用寿命。尤其是我们遇到一些情况&#xff0c;必须要把U盘进行格式化才行。那么磁盘格式化怎么操作&#xff1f;遇到无法格式化的情况怎么办&#xff1f;别急&#xff0c;下面有3个关于格式化U盘的方法&…

通信协议综述-第3讲 | ifconfig:最熟悉又陌生的命令行

上一节结尾给你留的一个思考题是,你知道怎么查看 IP 地址吗? 当面试听到这个问题的时候,面试者常常会觉得走错了房间。我面试的是技术岗位啊,怎么问这么简单的问题? 的确,即便没有专业学过计算机的人,只要倒腾过电脑,重装过系统,大多也会知道这个问题的答案:在 Win…

图片跟随鼠标移动效果的抖动问题

场景 图片跟随鼠标移动效果的实现思路&#xff1a; 触发mousemove事件响应时&#xff0c;通过e.offsetX,e.offsetY获取到当前鼠标的位置。再修改图片的css样式中的top, left属性&#xff08;图片采用绝对定位&#xff09;。 代码如下&#xff1a; <div id"angel&quo…

车载TBOX嵌入式设备软件的功能测试

作者 | 李伟 上海控安安全测评中心安全测评部总监 来源 | 鉴源实验室 01 Tbox简介 Tbox(Telematics Box)是汽车座舱系统中的一个ECU&#xff0c;物理外观上是一个方正的盒子&#xff0c;通常会有线束接口、HSD接口、通讯和导航天线接口等。软件上Tbox一般会基于Linux操作系统…

音视频面试涨知识(二)

1.YUV知识点 1.1 为什么要有YUV YUV的亮度信号Y和色度信号U/V是分离的&#xff0c;如果只有Y信号分量而没有U/V分量&#xff0c;这样的图像就是黑白灰度图像&#xff0c;从黑白到彩色的兼容方案。 相对RGB&#xff0c;YUV的最大优点是只占用较小的频宽&#xff0c;RGB需要至少…

EasyPytest测试平台开发日志之系统设计

EasyPytest测试平台&#xff0c;帮你高效管理Pytest测试用例。 EP平台的定位是Pytest测试用例管理平台&#xff0c;80%的自动化用例开发在PyCharm等专业的IDE中进行&#xff0c;20%的用例调度和结果查看就交给EP平台来管理。 EP平台是对teprunner测试平台的一次全新升级&#x…

【设计模式】 工厂模式 (三)

文章目录4.2 工厂模式4.2.1 概述4.2.2 简单工厂模式4.2.2.1 结构4.2.2.2 实现4.2.2.4 优缺点4.2.2.3 扩展4.2.3 工厂方法模式4.2.3.1 概念4.2.3.2 结构4.2.3.3 实现4.2.3.4 优缺点4.2.4 抽象工厂模式4.2.4.1 概念4.2.4.2 结构4.2.4.2 实现4.2.4.3 优缺点4.2.4.4 使用场景4.2.5 …

【电脑使用】硬盘无法引导进入系统,无法退出BIOS

前言 因为想要给自己的笔记本添置装备&#xff0c;于是想着把老电脑上的固态拆下来&#xff0c;但是考虑到老电脑虽然不常用&#xff0c;但还是偶尔会用&#xff0c;不能是瘫痪状态&#xff0c;于是想把我之前淘到的一个机械硬盘换上去&#xff0c;结果发现无法引导进入系统&am…

【JavaEE】HTTP(Part1 含面试题)

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录前言一、HTTP协议抓包工具协议总格式&#xff08;重要&#xff01;&#xff01;&#xff09;二、HTTP协议中的细节【HTTP请求】【HTTP中的“方法”】【GET】&#xff1a;最常用的HTTP请求【POST】【认识请求“报头”…

SecureBridge Alexandria Release 2和iOS 15的支持

SecureBridge Alexandria Release 2和iOS 15的支持 添加了对Embarcadero RAD Studio 11 Alexandria Release 2的支持。 增加了对Apple iOS模拟器ARM 64位目标平台的支持。 增加了对Lazarus 2.2.2的支持。 添加了对Apple iOS 15的支持。 增加了对Android 12的支持。 SSH、SFTP、…

ubuntu 安装 colmap

目录 一、安装colmap 二、报错解决 三、安装成功 四、colmap使用教程 一、安装colmap 参考安装&#xff1a;​​​​​​​chttps://blog.csdn.net/weixin_46132232/article/details/124211233 官方&#xff1a;COLMAP 官方information 二、报错解决 2.1 在安装colmap的…

HashMap源码解析

HashMap源码解析 基础入门 什么是哈希 核心理论&#xff1a;Hash 也称散列、哈希&#xff0c;对应的英文都是 Hash。基本原理就是把任意长度的输入&#xff0c;通过Hash算法变为固定长度输出。 这个映射的规则就是对应的 Hash 算法&#xff0c;而原始数据映射后的二进制串就…

飞桨VisualDL本地运行问题

最近参加了百度飞桨的基于深度学习的自然语言处理 免费AI课程&#xff0c;有一道作业题是要利用飞桨提供的可视化工具VisualDL查看词向量降维效果。由于安全方面的原因&#xff0c;AI Studio中的可视化服务无法使用了。当按照作业步骤&#xff0c;生成日志文件后&#xff1a; 添…

Vue3+Element-ul学生管理系统(项目实战)

Vue3Element-ul学生管理系统(项目实战) 要发奋做一个可爱的人。不埋怨谁&#xff0c;不嘲笑谁&#xff0c;也不羡慕谁&#xff0c;阳光下灿烂&#xff0c;风雨中奔跑&#xff0c;做自我的梦&#xff0c;走自我的路&#xff01; 看本项目的前提自己学过Vue2Vue3Elementui组件库 …

Python学习笔记-操作数据库

记述python中关于数据库的基本操作。 一、数据库编程接口 1.连接对象 数据库连接对象&#xff08;Connection Object&#xff09;提供获取数据库游标对象、回滚事物的方法&#xff0c;以及连接、关闭数据库连接。 1.1 获取连接对象 使用connect()方法获得连接对象&#xf…