C语言C位出道心法(一):基础语法






一:基础语法认知:|变量|常量|数据类型|

变量与常量,数据类型认知升维

 C语言中各种变量的定义及数据类型的认知:
 一般而言,在譬如C等高级编程语言中,我们定义不同的类型的变量,需要不同的数据类型来进行声明,不同类型的数据类型声明的变量占用的内存空间不一样;
 而数据类型大致分为两种:
 (1)内置的基本数据类型:数字类型,字符型,布尔型等
 (2)自定义的数据类型: 如结构体类型,共用体类型,指针类型,枚举类型,数据类型等


变量定义语法规则:
   (1)先声明,再赋值
   数据类型  变量名称;  // 声明变量
   变量 = 变量的值;     // 给变量赋值
      C语言的语句以分号“;”语句的结束标识
(2)变量声明同时进行赋值 
   数据类型 变量名称 = 变量的值
(3)同时定义多个变量并赋值
   数据类型  变量名1 = 变量值1, 变量名2 = 变量值2, 变量名3 = 变量值3, 变量名4 = 变量值4, .....


 C语言定义常量使用关键字const
 const 数据类型 常量名 = 常量值;   // 注意:常量定义的同时必须赋值,否则编译器报错,默认的分号不能少;


 C语言定义字符变量语法规则:
  char 变量名 ;
  变量名 = '变量值' ‘; // 必须单引号''把字符引起来 


#include <stdio.h>  // 头文件
/*
  C语言中各种变量的定义及数据类型的认知:
	 一般而言,在譬如C等高级编程语言中,我们定义不同的类型的变量,需要不同的数据类型来进行声明,不同类型的数据类型声明的变量占用的内存空间不一样;
	 而数据类型大致分为两种:
	 (1)内置的基本数据类型:数字类型,字符型,布尔型
	 (2)自定义的数据: 如结构体类型,共用体类型,指针类型,枚举类型,数据类型等
*/
void main() { // 程序执行入口,main函数可以有参数;
	printf("C语言定义变量语法规则");
	/*
	  变量定义语法规则:
	     (1)先声明,再赋值
		    数据类型  变量名称;  // 声明变量
		    变量 = 变量的值;     // 给变量赋值
	        C语言的语句以分号“;”语句的结束标识
		 (2)变量声明同时进行赋值 
		    数据类型 变量名称 = 变量的值
		 (3)同时定义多个变量并赋值
		    数据类型  变量名1 = 变量值1, 变量名2 = 变量值2, 变量名3 = 变量值3, 变量名4 = 变量值4, .....
		    
	*/
	// 定义数字类型的变量
	short sh = 200; // 定义短整形的数据类型变量
	long lo = 5565464; // 定义长整形的数据类型变量

	int in = 300000; // 定义短整形数据
	printf("输出不同的数量类型: \n");
	printf("短整形是: %hd\n", sh);
	printf("整形是: %d\n", in);
	printf("输出长整形:%ld\n",lo);

	printf("===============================================\n");
	printf("   学无止境,C位出道\n");
	printf("===============================================\n");

	printf("C语言定义常量:\n");
	/*
	  C语言定义常量使用关键字const
	  const 数据类型 常量名 = 常量值;   // 注意:常量定义的同时必须赋值,否则编译器报错,默认的分号不能少;
	*/
	const float NUM = 3.1415926;

	printf("常量Num = %f", NUM);

	printf("\n");
	printf("");
	printf("");
	printf("字符定义规则:");
	/*
	  C语言定义字符变量语法规则:
	   char 变量名 
	   变量名 = '变量值'  // 必须单引号''把字符引起来
	*/
	char t = 'A';
	printf("字符t = %c", t);
	printf("");
	
}

运行效果:


C语言定义变量语法规则输出不同的数量类型:
短整形是: 200
整形是: 300000
输出长整形:5565464
===============================================
   学无止境,C位出道
===============================================
C语言定义常量:
常量Num = 3.141593
字符定义规则:字符t = A
D:\program_file\c_workspace\ProjectCodeChapter\x64\Debug\ProjectCodeChapter.exe (进程 17968)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .


 

二:宏定义|宏认知


 通常定义字符串常量使用#define,它被称为"宏定义"。根据宏定义中是否有参数,
 可以将宏定义分为:
    (1)不带参数的宏定义
    (2)带参数的宏定义
    ========================================================================
    (1.1)不带参数的宏定义,如下形式:
        #define 宏名 字符序列
        #: 表示这是一条预处理命令
        宏名: 是一个标识符,必须符合C语言标识符的规定
        字符序列: 可以是常量,表达式,格式字符串等 例如: #define PI 3.14159 ,该语句的作用是用PI替代
        3.14159,在编译处理时,每当在源程序中遇到PI就自动用3.14159代替
    (1.2)宏定义不是C语句,不需要在行末加分号,宏定义后,即可成为其他宏定义中的一部分。
     (1.3)不带参数的宏,在字符串中含有宏名,则不能被替换
     (1.4)#define 命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到此源文件结束
     (1.5)可以用#undef命令终止宏定义的作用域 


#include <stdio.h>
/*
   通常定义字符串常量使用#define,它被称为"宏定义"。根据宏定义中是否有参数,
   可以将宏定义分为:
      (1)不带参数的宏定义
      (2)带参数的宏定义
      ========================================================================
      (1.1)不带参数的宏定义,如下形式:
          #define 宏名 字符序列
          #: 表示这是一条预处理命令
          宏名: 是一个标识符,必须符合C语言标识符的规定
          字符序列: 可以是常量,表达式,格式字符串等 例如: #define PI 3.14159 ,该语句的作用是用PI替代
          3.14159,在编译处理时,每当在源程序中遇到PI就自动用3.14159代替
      (1.2)宏定义不是C语句,不需要在行末加分号,宏定义后,即可成为其他宏定义中的一部分。
       (1.3)不带参数的宏,在字符串中含有宏名,则不能被替换
       (1.4)#define 命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到此源文件结束
       (1.5)可以用#undef命令终止宏定义的作用域
       (3)宏定义用于预处理命令,它不同于定义的变量,只作字符替换,不分配内存空间
          (3.1)带参数的宏定义。带参数的宏定义不只是简单的字符串替换,还要进行参数的替换。其一般形式如下:
          #define 宏名(参数列表) 字符序列
*/
#define SIDE 5 // 定义宏 正方形的边
#define PERIMETER 4*SIDE // 定义正方形的周长宏
#define AREA SIDE*SIDE // 定义面积宏
#define STANDARD "Come on baby,jion us.\n"  // 定义字符串宏
#define TEST "Come on baby,jion us."
#define MIN(x,y)(x<y?x:y) // 带参数的宏定义
void main() {
    printf("输出宏字符串: \n");
    printf(STANDARD);
    printf("正方形的边长: %d \n", SIDE);
    printf("正方形的周长: %d \n", PERIMETER);
    printf("正方形的面积: %d \n", AREA);
    printf("字符串中含有宏名时,该宏将不会被替换\n");
    char exp[30] = "This TEST is not that TEST";
    printf("%s\n", exp);
    printf("==================================\n");
    printf("使用#undef终止宏的作用域\n");
    printf("%s\n", TEST);
#undef TEST
    printf("=======================================\n");
    int x = 15, y = 9; // 定义变量
    printf("x,y为:\n");
    printf("%d,%d \n",x,y); // 显示输出
    printf("the min number is:%d\n", MIN(x, y)); // 输出最小的一个数据
    
}

运行效果:


输出宏字符串:
Come on baby,jion us.
正方形的边长: 5
正方形的周长: 20
正方形的面积: 25
字符串中含有宏名时,该宏将不会被替换
This TEST is not that TEST
==================================
使用#undef终止宏的作用域
Come on baby,jion us.
=======================================
x,y为:
15,9
the min number is:9

D:\program_file\c_workspace\ProjectCodeChapter01\x64\Debug\ProjectCodeChapter01.exe (进程 16996)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .



 三:类型转换|格式化输出


 (1)类型转换
    1.1隐式类型转换 ---自动类型转换
       在C语言中,如果把比较短的数据类型变量的值赋值给比较长的数据类型变量,那么比较短的数据类型变量中的值会升级为
       比较长的数据类型,数据信息不会丢失。这类转换称为自动类型转换;
       这种转换类似于,小杯子的水往大杯导入不会发生水溢出;
    1.2显示类型转换 ---强制类型转换
       强制类型转换是将比较长的数据类型变量的值赋值给比较短的数据类型变量,转换的过程如:大杯水往小杯导入,必会有水溢出,
       也就是数据会丢失
       强制类型转换一般形式:
           (类型名) (表达式)
           int secret1=103;
           char answer1=(char)secret1; // 进行强制类型转换
 (2)格式化字符输出|输入函数
    2.1 使用printf(格式控制,输出列表)


#include <stdio.h> // 引入头文件

/*
  (1)类型转换
     1.1隐式类型转换 ---自动类型转换
        在C语言中,如果把比较短的数据类型变量的值赋值给比较长的数据类型变量,那么比较短的数据类型变量中的值会升级为
        比较长的数据类型,数据信息不会丢失。这类转换称为自动类型转换;
        这种转换类似于,小杯子的水往大杯导入不会发生水溢出;
     1.2显示类型转换 ---强制类型转换
        强制类型转换是将比较长的数据类型变量的值赋值给比较短的数据类型变量,转换的过程如:大杯水往小杯导入,必会有水溢出,
        也就是数据会丢失
        强制类型转换一般形式:
            (类型名) (表达式)
            int secret1=103;
            char answer1=(char)secret1; // 进行强制类型转换
  (2)格式化字符输出|输入函数
     2.1 使用printf(格式控制,输出列表)
*/

void main() { // 主函数
    double foot = 37.5f; // 定义双精度变量,用来标识脚的大小
    int size = (int)foot + 1; // 强制类型转换,表示鞋码的大小
    printf("您的脚是%.1f码的尺寸\n", foot);// 输出脚的大小
    printf("您应该买%d码的鞋子\n", size); // 输出鞋码的大小

}

运行效果:


您的脚是37.5码的尺寸
您应该买38码的鞋子

D:\program_file\c_workspace\ProjectCodeChapter02\x64\Debug\ProjectCodeChapter02.exe (进程 8424)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
 


 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

go中“哨兵错误”的由来及使用建议

“哨兵错误&#xff08;sentinel error&#xff09;”这个词的出处。之前我也只是在一些书籍和资料中见到过&#xff0c;也没深究。当这个网友问了我之后&#xff0c;就深入的翻了翻资料&#xff0c;在golang的官方博客中找到了这个词的提法&#xff0c;也算是比较官方的了吧。…

如何在外SSH远程连接Ubuntu系统【无公网IP】

如何在外SSH远程连接Ubuntu系统【无公网IP】 文章目录 如何在外SSH远程连接Ubuntu系统【无公网IP】前言1. 在Ubuntu系统下安装cpolar软件2. 完成安装后打开cpolar客户端web—UI界面3. 创建隧道取得连接Ubuntu系统公网地址4. 打开Windows的命令界面并输入命令 前言 随着科技和经…

酷开科技,让家庭更有温度!

生活中总有一些瞬间&#xff0c;会让我们感到无比温暖和幸福。一个拥抱、一句问候、一杯热茶&#xff0c;都能让我们感受到家庭的温馨和关爱。酷开科技也用自己的方式为我们带来了独属于科技的温暖&#xff0c;通过全新的体验将消费者带进一个充满惊喜的世界&#xff0c;让消费…

常见排序算法之堆排序

堆排序是一种利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构&#xff0c;并同时满足堆积的性质&#xff1a;即子结点的键值或索引总是小于&#xff08;或者大于&#xff09;它的父节点。 需要注意的是排升序要建大堆&#xff0c;排降序建小堆…

SurfaceFliger与Vsync信号如何建立链接?

Vsync信号上报流程 Vsync的注册函数&#xff0c;来临时会回调HWComposer的hook_VSYNC方法&#xff0c;接着调用到vsync方法中 大致流程梳理&#xff1a; 该方法会通知给SurfaceFliger的onVsyncReceived方法&#xff0c;接着调用DispSync的addResyncSample方法。 DispSyncThr…

2023-在mac下安装Homebrew的国内镜像

mac安装Homebrew的国内镜像 尝试使用其他下载源&#xff1a;GitHub 可能会受到访问限制&#xff0c;尝试使用其他镜像或下载源。您可以使用清华大学、中科大或阿里云的 Homebrew 镜像&#xff0c;以提高下载速度和可靠性。例如&#xff0c;可以使用阿里云的镜像来安装 Homebre…

window系统修改rabbitmq 默认端口

安装完rabbitmq之后&#xff0c;默认的client端口是5672, 控制台访问端口是15672&#xff0c;rabbitmq管理工具启动之后在浏览器中输入地址&#xff1a; ​ ​http://localhost:15672/​​​ 就可以访问后台​ ​​​&#xff0c; 默认管理员账号&#xff1a;guest 密码&#x…

虚拟化、容器与Docker基本介绍以及安装部署(Docker 基本管理)

虚拟化、容器与Docker基本介绍以及安装部署&#xff08;Docker 基本管理&#xff09; 1、Docker 概述1.1Docker与虚拟机的区别1.2容器在内核中支持2种重要技术&#xff1a;1.3Docker核心概念 2、安装docker服务docker安装步骤详解 3、 网络优化4、docker基本命令4.1查看镜像——…

Unity 粒子特效-第二集-烟雾特效

一、烟雾特效预览 二、制作原理 资源在绑定资源里&#xff0c;我得审核通过以后才能改成免费&#xff0c;如果着急要&#xff0c;可以评论区发一下&#xff0c;我给你们发网盘 1.这个是序列帧图片粒子特效一起组合而成的 这就是一个单独整个的烟雾动画 如下&#xff0c;是这…

连铸生产线液压系统比例伺服阀放大器

连铸生产线液压系统是连铸机的关键组成部分&#xff0c;它由液压站组成&#xff0c;包括高压泵站、剪切机泵站、滑动水口站、塞棒液压站、中间罐车液压站和倾翻台液压站。这些站点通过管道连接&#xff0c;共同实现连铸机的各类动作&#xff0c;如升降、横移、定位、锁紧及辊缝…

如何借助数据集更好的评估NLP模型的性能?

随着信息时代的迅猛发展&#xff0c;每天有无数文本、声音、图片和视频不断涌入互联网。如何从海量数据中提炼有意义信息成为学术界和工业界迫切需要解决的问题。在此背景下&#xff0c;自然语言处理&#xff08;NLP&#xff09;应运而生&#xff0c;成为人工智能领域最为活跃的…

设计模式_观察者模式

观察者模式 介绍 设计模式定义案例问题堆积在哪里解决办法观察者是行为型设计模式 多个对象 观察 1个对象小强考试完 成绩公布了 家长/同学得知成绩后 做出不同反应一个一个通知很麻烦 先通知谁 也有讲究的 信息发布方 抽象出一个信息管理类 负责管理监听者 类图 代码 Obse…

Java访问直接内存

一、背景 上一篇文章 类目体系设计总结&#xff0c;讲了Forest缓存数据是放在直接内存的&#xff0c;今天我们就来了解一下Java的直接内存是个啥玩意&#xff0c;它该怎么使用。 二、直接内存介绍 直接内存是在Java堆外的&#xff0c;直接向系统申请内存空间&#xff0c;它不…

【数据挖掘 | 数据预处理】缺失值处理 重复值处理 文本处理 确定不来看看?

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

Ansible 安装部署及常用命令和17个模块详解

目录 Ansible 1 ansible 环境安装部署 1.1 管理端安装 ansible 1.2 ansible 目录结构 1.3 配置主机清单 1.4 配置密钥对验证 2 ansible 命令行模块 2.1 command 模块 2.2 shell 模块 2.3 cron 模块 2.4 user 模块 2.5 group 模块 2.6 copy 模块 2.7 file 模块 2.…

第65讲:MySQL存储过程之循环语法的核心概念与应用案例

文章目录 1.存储过程中循环的种类2.WHILE循环控制2.1.WHILE循环语法格式2.2.WHILE循环经典案例 3.REPEAT循环控制3.1.REPEAT循环语法结构3.2.REPEAT循环经典案例 4.LOOP循环控制4.1.LOOP循环语法结构4.2.LOOP循环经典案例一4.3.LOOP循环经典案例二 1.存储过程中循环的种类 在存…

九州未来入选“2023边缘计算产业图谱”三大细分领域

10月26日&#xff0c;边缘计算社区正式发布《2023边缘计算产业图谱》&#xff0c;九州未来凭借深厚的技术积累、优秀的产品服务、完善的产品解决方案体系以及开源贡献&#xff0c;实力入选图谱——边缘计算平台、边缘计算开源、边缘云服务提供商三大细分领域&#xff0c;充分彰…

安防监控项目---web点灯(网页发送命令控制A9的led)

文章目录 前言一、web点亮LED流程二、静态网页设计&#xff08;html界面&#xff09;三、 CGI和BOA在本项目中的使用总结 前言 书接上期&#xff0c;和大家分享的是web点灯&#xff0c;哈哈哈&#xff0c;谈论起点灯这个词&#xff0c;这么久以来我已然已经成长为一名合格的点…

JVM(Java Virtual Machine)G1收集器篇

前言 本文参考《深入理解Java虚拟机》&#xff0c;本文主要介绍G1收集器的收集思想和具体过程&#xff08;填上一篇文章留下的坑&#xff09; 本系列其他文章链接&#xff1a; JVM&#xff08;Java Virtual Machine&#xff09;内存模型篇 JVM&#xff08;Java Virtual Machi…

网络安全中常见的问题和隐患

网络安全是当今数字化世界中的一个重要问题&#xff0c;各种隐患和威胁不断涌现。其中&#xff0c;IP地址与网络安全之间有着密切的联系。本文将讨论网络安全中常见的问题和隐患&#xff0c;以及如何通过查询IP地址来解决一些与之相关的问题。 常见网络安全问题和隐患 1. 黑客…