首页 > 系统相关 >C语言之Linux环境下学习(三)

C语言之Linux环境下学习(三)

时间:2024-03-17 18:59:13浏览次数:286  
标签:类型转换 运算符 字符 int 局部变量 C语言 学习 Linux 全局变量

本章节主要讲了数据类型、变量命名规则、运算符优先级。

目录

1.main函数

2.注释:

​编辑

3.标准输入(scanf)和标准输出(printf)

4.数据类型

4.1整数型:

4.2浮点型:

5.运算符优先级

6.字符常量

7.运算符

​编辑

8.变量

8.1全局变量

局部变量


1.main函数

main函数是C语言程序的主体。

2.注释:

单行注释://...

多行注释:/*...*/

3.标准输入(scanf)和标准输出(printf)

%d十进制
%x十六进制
%o八进制

4.数据类型

常用的数据类型:整型、浮点型、字符

4.1整数型:

int%d
char%c

4.2浮点型:

float、double%m.nf

单精度、双精度。m:位宽、n:小数点后n位

5.运算符优先级

1. 操作数越多的运算符优先级相对低一点:单目—-双目(不包含赋值运算符)---三目—赋 值—逗号。

2. 双目运算符个数最多,算术运算符---移位运算符---关系运算符---位运算符---逻辑运算符

3. 位运算符:~ & ^ |

4. 逻辑运算符:! && ||

5. 所有的赋值运算符都具有相同的优先级

6.字符常量

   字符常量是用单引号括起来的单个字符。字符常量可以是一个普通的ASCII字符(如'a'、'A'、'0'、'%'等),也可以是一个特殊的转义字符(如'\n'、'\t'等)

  • 普通的ASCII字符常量:
char ch1 = 'A';
char ch2 = 'a';
char ch3 = '0';
  • 转义字符常量:
char newline = '\n';  // 换行符
char tab = '\t';      // 制表符
char backslash = '\\'; // 反斜杠
  • ASCII码常量表示:
char asciiChar = 65;  // 表示ASCII码为65的字符,即字符'A'

7.运算符

按照操作数有:

单目运算符:(+、-、*、/)

双目运算符:(+=\、-=\...)

三目运算符:[ (表达式1)?表达式2 :表达式3]

逻辑运算符

与&、或|、非!

实际上非0表true,0表false

关系运算符:>、<、>=、<=

赋值运算符:=

类型转换

C语言中的类型转换包括隐式类型转换(自动类型转换)和显式类型转换(强制类型转换)。

隐式类型转换

隐式类型转换是由编译器自动执行的类型转换,它发生在表达式涉及不同数据类型时。在隐式类型转换中,通常较低精度的类型会被转换为较高精度的类型以避免精度损失。

例如,在以下表达式中,整数会自动转换为浮点数进行计算:

int a = 5;
float b = 2.5;
float c = a + b; // a被隐式转换为float类型再与b相加

显式类型转换 (强制类型转换)

显式类型转换是由程序员明确指定的类型转换操作。在C语言中,使用强制类型转换可以将表达式的值转换为指定的类型,即使这可能造成精度损失或数据溢出。

double d = 3.14;
int i = (int)d;  // 显式将浮点数转换为整数,小数部分会被截断

        在强制类型转换中,使用括号将要转换的表达式括起来,并在括号内指定要转换的目标类型。

        警告:虽然强制类型转换提供了灵活性,但过度使用它可能会导致代码不易阅读和维护,因此应该谨慎使用。

        在涉及类型转换时,应理解不同数据类型的表示范围和精度,以确保转换操作能够得到预期的结果,并尽量避免精度损失和数据溢出的问题。

8.变量

8.1全局变量

        全局变量是在函数外部声明的变量,它们可以被程序中的所有函数访问。全局变量的作用域从声明处开始,直到文件结束。全局变量在程序启动时被创建,在程序结束时销毁。

示例:

#include <stdio.h>

int globalVar = 10;  // 全局变量

void function1() {
    printf("全局变量在 function1 中可访问:%d\n", globalVar);
}

int main() {
    printf("全局变量在 main 函数中可访问:%d\n", globalVar);
    function1();
    return 0;
}

8.2局部变量

        局部变量是在函数或代码块内部声明的变量,它们只能在声明的函数或代码块内部使用。局部变量的作用域从声明处开始,直到所在的代码块结束。局部变量在程序每次执行到其所在的代码块时被创建,在代码块结束时销毁。

示例:

#include <stdio.h>

void function2() {
    int localVar = 20;  // 局部变量
    printf("局部变量在 function2 中可访问:%d\n", localVar);
}

int main() {
    int localVar = 15;  // 局部变量
    printf("局部变量在 main 函数中可访问:%d\n", localVar);
    function2();
    return 0;
}

        全局变量和局部变量之间的区别主要在于它们的作用域和生命周期。全局变量具有全局范围,可以在整个程序中使用,而局部变量只能在其声明的函数或代码块中使用。由于全局变量的生命周期长,它们占用内存的时间更长,因此应谨慎使用全局变量,以避免不必要的内存占用。

标签:类型转换,运算符,字符,int,局部变量,C语言,学习,Linux,全局变量
From: https://blog.csdn.net/qq_53344001/article/details/136738372

相关文章

  • 毕业设计:基于机器学习的工地员工安全着装识别系统 目标检测
    目录前言课题背景和意义实现技术思路一、算法理论基础1.1 Mobilenet算法1.2 人脸检测模型二、 数据集2.1数据集2.2数据扩充三、实验及结果分析3.1 实验环境搭建3.2 模型训练最后前言  ......
  • 【Linux】linuxCNC+Qt+Opencascade+kdl+hal 实时6轴机器人控制器
    CNC机器人程序框架机器人模型笔记:debian重启后无法打开共享目录最新版搜狗输入法安装后不支持中文,需要安装旧版本的sogoupinyin_4.0.1.2800_x86_64.deb可用数控机器人在哪些领域应用有优势数控机器人在多个领域都展现出了显著的优势,特别是在需要高精度和......
  • Linux监控CPU和GPU
    监控显卡占用情况watch-n2nvidia-smicpupower安装sudoaptinstalllinux-tools-commonCPU实时频率查看watch-n1sudocpupowermonitor查看cpu频率watch-n0"cat/proc/cpuinfo|grep-imhz"查看cpu频率模式cpupowerfrequency-info查看当前所有CPU的信息su......
  • Linux技术内核:数字化时代企业运维的终极武器
    文章目录引言:Linux技术内核与企业运维的紧密联系一、Linux技术内核:企业运维的基石二、内核特性:保障企业级应用的稳定性三、性能优化:调整内核参数以提升效率四、安全机制:加固企业数据的保护墙五、自动化运维:简化管理流程六、容器化与微服务:适应现代应用趋势七、总结:Linux......
  • c语言,联合体
    一.什么是联合体:像结构体一样,联合体也是由一个或多个成员变量组成的这些成员变量可以是不同的类型,但编译器只给最大成员分配足够的内存,联合体体内的成员都是公用一块空间的,因此联合体也叫做共同体二.联合体类型的声明:unionUn//{charc;inti;};intmain(){ uni......
  • C语言程序设计——实验报告 1
    *实验项目名称:实验一熟悉C语言运行环境*实验项目类型:验证性*实验日期:2023年3月14日一、实验目的下载安装Devc6.0程序。了解在该系统上如何进行编辑、编译、连接和运行一个C程序。通过运行简单的C程序了解C程序的特点。二、实验硬、软件环境Windows计算机、Devc6.0三、......
  • 基于C语言实现整数行列式
    在本文章内,将会实现行列式的建立、销毁、打印、计算四个操作。鉴于笔者技术有限,此行列式只针对整数int型,请读者自行扩充~_~。1.行列式的建立与销毁我们首先建立行列式的数据类型,由于行列式规模的不确定,采用动态分配方法。typedefstruct{ intn; int*p;}determinant;......
  • Linux开发:open打开文件
    open是Linux中最常用的系统调用(原子操作),用于获取一个访问文件或设备的文件描述符。#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>intopen(constchar*pathname,intflags);intopen(constchar*pathname,intflags,mode_tmode);可以看到open......
  • Linux开发:通过sendfile高效的拷贝文件数据
    如果想要将一个文件的内容拷贝到另一个文件中,常规的做法是读取源文件,然后再把内容写入到目的文件中:#include<fstream>#include<iostream>#include<string>#include<vector>usingnamespacestd;vector<string>readFile(conststring&filename){vector<stri......
  • 通过Wine实现在mac和linux上实现masm编程
    原文链接:UsingMASMonMacorLinuxviaWine抄这个文档是因为它的确有用,mac下也能很好的学习windowsapi。而且我怕老外的文档无法访问。Wine是啥来百度百科一下:Wine(“WineIsNotanEmulator”的缩写)是一个能够在多种POSIX-compliant操作系统(诸如Linux,macOS及BSD......