C语言教程:数据类型与运算符解析

版权申诉
0 下载量 123 浏览量 更新于2024-07-04 收藏 1.34MB PPT 举报
"C语言程序设计教程课件:2_a_DatatypesOperators.ppt" 在C语言中,数据类型(Datatypes)和运算符(Operators)是编程的基础,它们构成了程序设计的核心要素。本教程主要涵盖了以下几个方面: 1. 数据与数据类型(Data & Datatype) - 概览(Overview) - 编程语言的基本语法涉及到常数、变量、运算符、表达式和函数。常数是不可变的值,如5和3.6;变量则是存储数据的容器,如x和a;运算符用于对变量和常数进行操作,如加法(+);表达式是由变量、常量和运算符组成的计算单位,如x + 5;函数如sin()用于执行特定计算或操作。 2. 基本数据类型(Basic Datatypes & Its Expression) C语言中的基本数据类型包括整型(int)、字符型(char)、浮点型(float)和双精度浮点型(double)。它们定义了变量可以存储的数据范围和精度。 3. 算术与赋值运算符(Arithmetic & Assignment Operators) - 算术运算符:包括加法(+)、减法(-)、乘法(*)、除法(/)和取余(%)等,用于数值计算。 - 赋值运算符:例如等号(=),用于将右边的值赋给左边的变量,还有复合赋值运算符如+=、-=、*=、/=和%=。 4. 关系与逻辑运算符(Relational & Logical Operators) - 关系运算符:如大于(>)、小于(<)、等于(==)、不等于(!=)、大于等于(>=)和小于等于(<=),用于比较两个表达式的值。 - 逻辑运算符:包括逻辑与(&&)、逻辑或(||)和逻辑非(!),用于组合或否定布尔表达式。 5. 位运算符(Bitwise Operators) - 位运算符作用于二进制级别的数据,如按位与(&)、按位或(|)、按位异或(^)、按位取反(~)以及左移(<<)和右移(>>)运算符,它们在低级别编程和高效算法中非常有用。 6. 其他运算符(Other Operators) - 指针运算符(如*和&)、成员访问运算符(.和->)、 sizeof 运算符用于获取变量或类型的大小,类型转换运算符用于将一个数据类型转换为另一个。 7. 混合操作和数据类型转换(Hybrid Operation & Datatype Conversion) - 在C语言中,不同类型的数据可以混合运算,但需要进行隐式或显式的类型转换,以确保正确性和避免数据溢出。 理解这些基本概念对于学习C语言至关重要,因为它们构成了编写任何C程序的基础。通过熟练掌握数据类型和运算符,开发者能够有效地控制和处理数据,实现复杂的计算和逻辑判断,从而解决各种问题。

#include "prepare_ogm.hpp" namespace senior { namespace guardian { namespace prepare { std::string PrepareOgm::Name() { return "Prepare Ogm Element"; } void PrepareOgm::Initiate() {} void PrepareOgm::Process(data::DataFrame& his, data::DataFrame& cur) { if (cur.source_ogm_points_.is_invalid()) return; if (cur.source_visual_ogm_points_.is_valid()) { cur.source_ogm_points_.insert(cur.source_ogm_points_.end(), cur.source_visual_ogm_points_.begin(), cur.source_visual_ogm_points_.end()); } if (cur.source_higher_ogm_points_.is_valid()) { cur.source_ogm_points_.insert(cur.source_ogm_points_.end(), cur.source_higher_ogm_points_.begin(), cur.source_higher_ogm_points_.end()); } auto& predict_path = cur.monitor_data_.mutable_predict_path(); predict_path.GenerateBoundary(cur); cur.AABox2d_ = predict_path.vehicle_AABox2d_; // if (!his.monitor_data_.is_need_to_take_over()) { // LOG(INFO)<<"1"; cur.AABox2d_.SetWidth(cur.AABox2d_.width() + 1.0); cur.AABox2d_.SetLength(cur.AABox2d_.length() + 1.0); // } std::vector<math::Vec2d> corner_points_; cur.AABox2d_.GetAllCorners(&corner_points_); auto& polygon2d = predict_path.tractor_polygon2d_; math::Vec2d temp; VoxelGrid filter_; common::Time now = common::Time::Now(); for (auto& point : cur.source_ogm_points_) { temp.set_x(point.x()); temp.set_y(-point.y()); if (cur.AABox2d_.IsPointIn(temp)) { cur.AABB_ogm_points_.emplace_back(point); } } cur.guardian_diagnose_["Prepare_PrepareOgm_AABox_filter"] = std::to_string((common::Time::Now() - now).ToSecond() * 1000); now = common::Time::Now(); filter_.VoxelGrid_ApplyFilter( cur.AABB_ogm_points_, cur.ogm_points_, corner_points_, 0.1, 0.1, 0); cur.guardian_diagnose_["Prepare_PrepareOgm_VoxelGrid_ApplyFilter"] = std::to_string((common::Time::Now() - now).ToSecond() * 1000); cur.ogm_points_.set_stamp(cur.source_ogm_points_.stamp()); cur.ogm_points_.set_time(cur.source_ogm_points_.time()); cur.ogm_points_.set_delay_time(cur.source_ogm_points_.delay_time()); cur.ogm_points_.set_valid(); } } // namespace prepare } // namespace guardian } // namespace senior 改变为C语言程序

2023-06-13 上传