当前位置: 首页 > news >正文

2025.8.10-学习C++(一)

检查 GCC 版本

g++ --version
#include <iostream>
/*
This is a multi-line comment
You can write multiple lines of explanation
Without worrying about adding // to each line
*/
int main() {
// Print a greeting messagestd::cout << "Hello,World!" << std::endl;return 0;
}

#include <iostream>:这是一个包含输入/输出流库的预处理器指令。它允许我们使用输入和输出操作,例如打印到屏幕。

  • 每个 C++ 程序都必须有一个main()函数
  • 函数main()是程序执行的开始
  • return 0;语句通常用于指示程序执行成

cout是 C++ 标准输入/输出库的一部分,用于显示输出。

  • std::cout:这是标准输出流对象
    • std::表示我们正在使用标准命名空间
    • cout代表“控制台输出”
  • <<:流插入操作符,用于将数据发送到输出流
  • std::endl:添加新行并刷新输出缓冲区
    • 确保消息立即显示
    • 将光标移动到下一行

编译 .cpp 文件

g++ hello.cpp -o hello
  • -o hello:指定输出可执行文件名称
    • -o是一个允许您命名输出文件的选项
    • hello是创建的可执行文件的名称

使用 ./hello 命令执行程序

单行注释 ://; 多行注释: 开始/*,结尾*/

使用 endl 和 \n 进行换行

#include <iostream>int main() {std::cout << "Mixing methods: " << std::endl;std::cout << "Line with endl\n";std::cout << "Line with newline character" << std::endl;return 0; // Return success status to the operating system
}
#include <iomanip>
std::cout << std::fixed << std::setprecision(4);
//格式化浮点数输出
//std::fixed-用来指定浮点数 以固定小数点格式输出
//std::setprecision(4)-用来指定 小数点后的精度(位数)

使用 #include <string> 访问字符串功能

#include <iostream>
#include <string>int main() {// Declaring and initializing string variablesstd::string greeting = "Hello, World!";std::string name = "John Doe";std::string empty_string;// Printing string variablesstd::cout << "Greeting: " << greeting << std::endl;std::cout << "Name: " << name << std::endl;// String concatenationstd::string welcome = greeting + " Welcome, " + name;std::cout << "Welcome Message: " << welcome << std::endl;// String lengthstd::cout << "Greeting length: " << greeting.length() << std::endl;// Accessing individual charactersstd::cout << "First character of name: " << name[0] << std::endl;// Modifying stringsname = "Jane Smith";std::cout << "Updated Name: " << name << std::endl;return 0;
}

类型转换

static_cast<int>
// Defining constants with const keywordconst int MAX_USERS = 100;const double PI = 3.14159;const char GRADE_SEPARATOR = '-';
//对常量名称使用大写

std::boolalpha

std::cout << "Is Student: " << std::boolalpha << isStudent << std::endl;
// std::boolalpha打印“true”/“false”而不是 1/0

sizeof() 检查不同数据类型的内存大小

#include <iostream>int main() {// Checking memory size of integer typesstd::cout << "Integer Types Memory Size:" << std::endl;// Checking memory size of character and boolean typesstd::cout << "\nOther Types Memory Size:" << std::endl;std::cout << "char: " << sizeof(char) << " bytes" << std::endl;std::cout << "bool: " << sizeof(bool) << " bytes" << std::endl;// Checking memory size of specific variablesint intVar = 42;double doubleVar = 3.14;char charVar = 'A';std::cout << "\nVariable Memory Size:" << std::endl;std::cout << "intVar: " << sizeof(intVar) << " bytes" << std::endl;std::cout << "doubleVar: " << sizeof(doubleVar) << " bytes" << std::endl;std::cout << "charVar: " << sizeof(charVar) << " bytes" << std::endl;return 0;
}//short: 2 bytes
//int: 4 bytes
//long: 8 bytes
//long long: 8 bytes//Floating-Point Types Memory Size:
//float: 4 bytes
//double: 8 bytes
//long double: 16 bytes//Other Types Memory Size:
//char: 1 bytes
//bool: 1 bytes

整数溢出:当值超过类型的最大限制时发生

#include <iostream>
#include <limits>int main() {// Demonstrating integer overflow with short intshort smallInt = 32767;  // Maximum value for shortstd::cout << "Original Value: " << smallInt << std::endl;// Overflow occurs when incrementing beyond maximumsmallInt++;std::cout << "After Overflow: " << smallInt << std::endl;// Using unsigned integers to prevent negative overflowunsigned int positiveOnly = 0;std::cout << "Unsigned Integer Start: " << positiveOnly << std::endl;// Decrementing unsigned integer causes wrap-aroundpositiveOnly--;std::cout << "Unsigned Integer Wrap-around: " << positiveOnly << std::endl;// Checking integer limitsstd::cout << "\nInteger Type Limits:" << std::endl;std::cout << "Short Max: " << std::numeric_limits<short>::max() << std::endl;std::cout << "Short Min: " << std::numeric_limits<short>::min() << std::endl;// Safe increment methodtry {if (smallInt < std::numeric_limits<short>::max()) {smallInt++;std::cout << "Safe Increment: " << smallInt << std::endl;} else {std::cout << "Cannot increment further" << std::endl;}} catch (const std::overflow_error& e) {std::cout << "Overflow Error: " << e.what() << std::endl;}return 0;
}
/*
Original Value: 32767
After Overflow: -32768
Unsigned Integer Start: 0
Unsigned Integer Wrap-around: 4294967295Integer Type Limits:
Short Max: 32767
Short Min: -32768
Safe Increment: -32767
*/

在 C++ 中,整数除法 (9/5) 的结果是 1,而不是 1.8;使用浮点值 (9.0/5.0) 以获得准确的结果

#include <iostream>int main() {// Basic ternary operator syntax// condition ? value_if_true : value_if_false// Simple comparisonint x = 10;int y = 5;// Determine the larger numberint max_value = (x > y) ? x : y;std::cout << "Larger value: " << max_value << std::endl;// 10
// condition ? value_if_true : value_if_false;if else语法

函数

return_type function_name(parameters) {// Function bodyreturn value;
}
// return_type:函数返回值的数据类型。如果函数不返回任何值,则使用关键字 void。
void swapValues(int& a, int& b) {// Directly modify the original variablesint temp = a;a = b;b = temp;
}
// int& a 和 int& b 是引用(reference),它们并不是实参的拷贝,而是直接指向调用函数时传入的变量。
// 因此,在函数内部对 a、b 的修改会直接作用在实参上。
unsigned long long calculateFactorialWithSteps(int n, int depth = 0)
// unsigned long long,足够大,可以存放较大阶乘结果。

头文件.h

#ifndef HEADER_NAME   // 如果没有定义 HEADER_NAME
#define HEADER_NAME   // 定义 HEADER_NAME// 头文件的内容#endif  // 结束条件编译
  • ifndef

    • “if not defined”的缩写。

    • 检查某个宏是否没有定义

    • 如果没有定义,就编译接下来的代码。

  • #define

    • 定义一个宏。

    • 在这里,它的作用不是用来替换文本,而是作为一个 标记,告诉编译器“这个头文件已经被包含过一次”。

  • #endif

    • 表示条件编译的结束。

    • 对应 #ifndef 的结束大括号。

stats.average = static_cast<double>(stats.sum) / size;
// 类型转换运算符,用来在编译时进行 显式类型转换。

结构体:

#include <iostream>
using namespace std;struct MathStats {int sum;double average;int minimum;int maximum;
};int main() {MathStats stats; // 定义一个结构体变量stats.sum = 50;stats.average = 12.5;stats.minimum = 3;stats.maximum = 20;cout << "Sum: " << stats.sum << endl;cout << "Average: " << stats.average << endl;cout << "Min: " << stats.minimum << endl;cout << "Max: " << stats.maximum << endl;return 0;
}

http://www.dtcms.com/a/422510.html

相关文章:

  • QAxios研发笔记(一):在Qt环境下,构建Promise风格的Get请求接口
  • 【OpenGL】复杂光照理论与实践
  • Binder和IBinder
  • 标准化考场建设方案解析:全频阻断作弊防控系统介绍
  • 网站开发 团队协作h5响应式 wordpress
  • 通义万相2.5系列模型发布,可生成音画同步视频
  • Transformer实战(20)——微调Transformer语言模型进行问答任务
  • Vue3和element plus在el-table中使用el-tree-select遇到的change事件坑
  • my sql 常用函数及语句的执行顺序
  • adb安装教程(附adb命令大全详解)adb环境配置教程
  • 当贝安卓9.0_创维E900S_e910V10C_3798mv310处理器线刷烧录包可救砖带adb功能
  • SQL 执行异常排查 java.sql.SQLException:从 SQLException 说起
  • uniapp 运行/发版微信小程序
  • vue2动态实现多Y轴echarts图表,及节点点击事件
  • MySQL 数据导出及备份方法
  • 公司网站建设设计如何收费网站诊断分析
  • 网站设计技巧如何看网站是用什么程序做的
  • Pythoner 的Flask项目实践-Mapboxgl-v3全球3D地图体验之地标性 3D 建筑物(迪拜哈里发大厦三维模型展示)
  • 学习机器学习要学习和掌握哪些知识?
  • 化学专业大型语言模型——SparkChemistry-X1-13B本地部署教程:洞察分子特性,精准预测化学行为
  • qt5下载
  • c 网站开发代码wordpress调用副标题
  • vscode 不能跳转 ERR_OSSL_EVP_BAD_DECRYPT
  • 大数据毕业设计选题推荐-基于大数据的全球产品库存数据分析与可视化系统-大数据-Spark-Hadoop-Bigdata
  • GitPuk入门到实战(4) - 如何进行分支管理
  • 基于AC6351D2做无线键盘
  • 【STM32项目开源】基于STM32的智能路灯控制系统
  • 超越编辑器:IntelliJ IDEA,如何成为Java开发的智慧引擎
  • Day31_【 NLP _1.文本预处理 _(2)文本张量表示方法】
  • UNIX下C语言编程与实践3-Vi 编辑器从入门到精通:快捷键使用与高效编辑技巧