机器人CPP编程基础-02变量Variables

这篇具有很好参考价值的文章主要介绍了机器人CPP编程基础-02变量Variables。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

机器人CPP编程基础-01第一个程序Hello World

基础代码都可以借助人工智能工具进行学习。

机器人CPP编程基础-02变量Variables,学习,CPP


C++ 

#include<iostream>

using namespace std;

main()
{
    //Declaring an integer type variable A, allocates 4 bytes of memory.
    int A=4;

    cout<<A <<endl;
    //Prints the address of the variable A.
    cout<<&A <<endl;

    /*
        1. Variables cant have the same name.
        2. Variable name cant start with a number.
        3. Variable name should not contain spaces.
        4. Variable name should be self-descriptive.
        5. Variable name can't have special characters or keywords.
    */

    //Re-initialization of A.
    A=10;
    cout<<A <<endl;
    cout<<&A;
}

该代码主要执行以下操作:

  1. 声明一个名为 A 的整数类型变量,并将其初始化为 4。在 C++ 中,int 类型通常占用 4 个字节的内存空间。
  2. 使用 cout 语句输出变量 A 的值,即 4
  3. 使用 cout 语句输出变量 A 的地址,即变量在内存中的位置。
  4. 通过注释的方式,列出了一些关于变量命名的规则和注意事项。
  5. 重新初始化变量 A 的值为 10
  6. 使用 cout 语句再次输出变量 A 的值,即 10
  7. 最后,再次使用 cout 语句输出变量 A 的地址。

代码解析完毕。

基本概念:

C++变量是一种在程序中存储数据的机制。变量是用于存储和操作数据的标识符。以下是C++变量的详细介绍:

  1. 变量的命名:变量名可以是字母、数字、下划线,并且必须以字母或下划线开头。变量名通常使用驼峰命名法或下划线命名法。
  2. 变量的类型:变量在声明时必须指定其类型。C++有许多内置类型,包括整数、浮点数、字符、布尔等。此外,还可以使用自定义类型,如结构体、类等。
  3. 变量的声明:在C++中,必须在程序中使用变量之前声明它们。声明告诉编译器变量的名称和类型,以便编译器知道如何为变量分配内存空间。
  4. 变量的赋值:在声明变量后,必须将其初始化为一个值。可以使用赋值运算符(=)将值赋给变量。
  5. 变量的作用域:变量的作用域是指变量在程序中的可见性和生命周期。C++中有两种类型的作用域:局部和全局。局部作用域限制了变量的可见性和生命周期,只能在定义它的代码块中使用。全局作用域使得变量在整个程序中都可见。
  6. 常量:常量是变量的特殊类型,表示一个不可变的值。在C++中,使用关键字const来声明常量。
  7. 变量的类型转换:在C++中,可以进行隐式类型转换和显式类型转换。隐式类型转换发生在编译器自动将一种类型的值转换为另一种类型时,例如将整数转换为浮点数。显式类型转换使用类型转换运算符(如static_castdynamic_cast等)来显式地将一个类型的值转换为另一个类型。

以上是C++变量的详细介绍,掌握这些概念对于编写高效的C++程序非常重要。

C++14是C++语言的最新标准,它引入了一些关于变量的新特性和改进。以下是一些关于C++14中变量的详细介绍:

  1. auto关键字:C++14引入了auto关键字,用于自动推断变量的类型。使用auto关键字可以简化变量的类型声明,特别是在使用复杂表达式或嵌套容器时。

  2. 列表初始化和变量声明:C++14支持使用花括号({})进行列表初始化,可以直接将初始值赋给变量,无需使用赋值运算符。例如:

 

cpp复制代码

int a = {10};
std::string str = {"Hello World"};
  1. 初始化列表的构造器:C++14引入了初始化列表构造器,允许在类的构造函数中使用初始化列表来初始化成员变量。例如:

 

cpp复制代码

class MyClass {
public:
MyClass(int a, int b) : m_a(a), m_b(b) {}
private:
int m_a;
int m_b;
};
  1. 通用委托表达式:C++14引入了通用委托表达式(Generalized Delegate Expressions),允许使用更灵活的表达式来构造委托表达式。
  2. 静态断言:C++14引入了静态断言(Static Assert),用于在编译时检查条件是否满足。如果条件不满足,编译器将产生错误或警告。
  3. 右值引用和移动语义:C++14引入了右值引用(Rvalue Reference)和移动语义(Move Semantics),以优化资源的管理和性能。

以上是C++14中关于变量的详细介绍。这些新特性和改进提高了代码的可读性和性能,使C++更加现代化和灵活。

C++20是C++语言的最新标准,引入了一些关于变量的新特性和改进。以下是一些关于C++20中变量的详细介绍:

  1. 类型推断和auto关键字:C++20扩展了类型推断的功能,使得变量声明时可以省略变量名的类型,而只使用变量名即可。这使得代码更加简洁易读。

 

cpp复制代码

auto x = 10; // 推断x的类型为int
auto v = {1, 2, 3}; // 推断v的类型为std::initializer_list<int>
  1. 结构化绑定:C++20引入了结构化绑定(Structured Binding),允许将一个结构体或联合体的成员变量直接分配给多个变量。

 

cpp复制代码

struct Point {
int x;
int y;
};
Point p;
auto [x, y] = p; // 将p的x和y成员变量分配给x和y变量
  1. 范围for循环:C++20引入了范围for循环(Range-based for loop),允许在for循环中直接遍历容器或数组的元素。

 

cpp复制代码

int arr[] = {1, 2, 3, 4, 5};
for (int elem : arr) {
// 直接访问arr的每个元素
std::cout << elem << std::endl;
}
  1. 初始化列表的构造器:C++20继续支持初始化列表构造器,允许在类的构造函数中使用初始化列表来初始化成员变量。
  2. concept关键字:C++20引入了concept关键字,用于定义类型的概念,用于约束模板参数的类型。这有助于提高代码的可读性和可维护性。
  3. if constexpr和if let:C++20引入了if constexpr和if let,用于在编译时条件判断和模式匹配,有助于编写更加简洁和高效的代码。
  4. coroutines:C++20引入了协程(Coroutines),这是一种控制流机制,允许函数在执行过程中暂停执行并将控制权返回给调用者,然后在某个特定点重新进入执行。协程可以用于实现异步编程、生成器等功能。

以上是C++20中关于变量的详细介绍。这些新特性和改进进一步提高了代码的可读性和性能,使C++更加现代化和灵活。


Arduino

int A = 4;  // 声明一个整数类型的变量 A,并初始化为 4  
  
void setup() {  
  Serial.begin(9600);  // 初始化串口通信,波特率为 9600  
}  
  
void loop() {  
  Serial.print(A);  // 输出变量 A 的值到串口  
  Serial.print(" ");  // 输出一个空格  
  Serial.print(&A);  // 输出变量 A 的地址到串口  
  Serial.println();  // 输出一个换行符  
  
  delay(1000);  // 延时 1 秒  
  
  A = 10;  // 重新初始化变量 A 的值为 10  
}

在 Arduino IDE 中,可以通过串口监视器来查看输出结果。在 loop() 函数中,每次输出变量 A 的值、地址和重新初始化 A 的值后,都使用 delay(1000) 来延时 1 秒,以便观察输出结果的变化。


ROS1

#include <ros/ros.h>  
  
int main(int argc, char **argv)  
{  
    // 初始化ROS节点  
    ros::init(argc, argv, "my_node");  
  
    // 创建ROS节点句柄  
    ros::NodeHandle nh;  
  
    // 声明一个整数类型变量A,分配4个字节的内存空间  
    int A = 4;  
  
    // 发布变量A的值到"chatter"话题  
    ros::Publisher chatter_pub = nh.advertise<std_msgs::Int32>("chatter", 1000);  
  
    // 创建标准消息类型:整数类型(32位)  
    std_msgs::Int32 msg;  
    msg.data = A;  
  
    // 发布消息到"chatter"话题  
    ros::Rate loop_rate(1);  
    while (ros::ok()) {  
        msg.data = A;  
        chatter_pub.publish(msg);  
        ros::spinOnce();  
        loop_rate.sleep();  
    }  
  
    return 0;  
}

上述代码是一个用于ROS1的C++节点,它使用了ROS的C++库。以下是代码的详细解释:

  1. #include <ros/ros.h>: 引入ROS的命名空间和头文件,这些文件包含了ROS中使用的各种函数和类。
  2. using namespace std;: 引入std命名空间,这样我们就可以直接使用标准库中的函数和对象,而无需在每个前面加上std::
  3. int main(int argc, char **argv): 主函数,程序的执行从这里开始。它接受两个参数:命令行参数的数量(argc)和命令行参数的值(argv)。
  4. ros::init(argc, argv, "my_node"): 初始化ROS节点。这是ROS中每个节点必须做的第一步。它接受三个参数:命令行参数的数量和值,以及该节点的名称。
  5. ros::NodeHandle nh;: 创建一个节点句柄对象nh。节点句柄是ROS中非常重要的对象,它提供了与ROS系统的通信接口。
  6. ros::Publisher chatter_pub = nh.advertise<std_msgs::Int32>("chatter", 1000);: 使用节点句柄创建一个名为chatter_pub的发布者对象,并使用advertise函数将其与名为"chatter"的话题关联起来。该发布者将使用std_msgs::Int32消息类型发布消息。第二个参数是发布者队列的大小,这里设置为1000。
  7. std_msgs::Int32 msg;: 创建一个名为msgstd_msgs::Int32消息对象,用于发布到"chatter"话题。
  8. msg.data = A;: 设置消息对象msg的数据字段为变量A的值。
  9. chatter_pub.publish(msg);: 使用发布者对象chatter_pub发布消息对象msg到"chatter"话题。
  10. ros::Rate loop_rate(1);: 创建一个名为loop_rate的速率对象,并将其设置为每秒发布一次消息(因为参数为1)。
  11. while (ros::ok()): 创建一个循环,当ROS系统正常运行时,该循环会一直执行。
  12. ros::spinOnce();: 执行一次ROS的Spin主循环,用于处理来自ROS系统的消息和调用回调函数。
  13. loop_rate.sleep();: 调用速率对象的sleep函数,暂停执行一段时间以保持发布频率为每秒一次。
  14. return 0;: 返回0表示程序成功执行结束。

总的来说,该代码创建了一个ROS节点,它周期性地发布一个整数变量A到名为"chatter"的话题中。它使用了ROS的核心组件,包括节点句柄、发布者和消息类型,以实现与ROS系统的交互。


……


 文章来源地址https://www.toymoban.com/news/detail-646670.html

到了这里,关于机器人CPP编程基础-02变量Variables的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器人模拟-02】 模拟移动机器人设置里程计

            在本教程中,我将向您展示如何设置移动机器人的测程。本教程是“机器人模拟”指南中的第二个教程。测量位移是仿真中的重要内容,设置测程的官方教程在此页面上,但我将逐步引导您完成整个过程。         您可以在此处获取此项目的完整代码。让我们

    2024年02月16日
    浏览(34)
  • nav02 学习03 机器人传感器

    移动机器人配备了大量传感器,使它们能够看到和感知周围的环境。这些传感器获取的信息可用于构建和维护环境地图、在地图上定位机器人以及查看环境中的障碍物。这些任务对于能够安全有效地在动态环境中导航机器人至关重要。 机器人的传感器类似人的感官,眼睛 和

    2024年02月21日
    浏览(29)
  • 【果树农药喷洒机器人】Part2:机器人变量喷药系统硬件选型

    📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉 📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处

    2024年02月14日
    浏览(37)
  • 机器人编程教程1机器人简介

    我们将制作一个机器人,并为其创建程序,赋予机器人行为,使其看起来具有智能并能够做出决策。我们将编写代码,使用传感器观察机器人周围的环境,并构建高级主题的实际示例,包括视觉、语音识别和说话。 您将看到简单的构建技术如何与少量代码相结合,使机器感觉

    2024年02月13日
    浏览(42)
  • 工业机器人编程与操作-搬运机器人码垛系统编程与仿真

    目录 一、设计背景  二、课程设计任务要求 三、设备导入并布局 四、传送带的smart组件 五、传送带整体思路 六、夹爪的smart组件6.1 LineSensor被测是否有任何对象与两点之间 七、夹爪整体思路 八、程序配置 九、各程序 参考文献 在科技和经济飞速发展的背景下,人力成本不断

    2024年02月07日
    浏览(44)
  • 医疗机器人软件中的机器人机器人编程技术:机器人技术的创新应用

    作者:禅与计算机程序设计艺术 随着科技的发展,医疗机器人逐渐成为人们关注的热门话题。医疗机器人可以在医院、康复中心等各种场合为病人提供帮助,不仅可以提高工作效率,还能降低医护人员的工作强度。而机器人编程技术则是实现医疗机器人功能的关键,本文将围

    2024年02月07日
    浏览(47)
  • python机器人编程——用python实现一个写字机器人

    本篇我们构建一个可以跟人一样写字的机器人python软件。实现如下功能:打开一个写字板,人类在屏幕上写或画出任意形状,机器人同步在纸面上画出和人类一样的形状,就好像人类在远程操控机械臂,又或是机械臂是人的另一只手。这个软件是可以扩展的,如果连上互联网

    2024年02月05日
    浏览(33)
  • 机器人编程教程2探索机器人-代码和电子设备

    我们将拆开一个机器人,看看它的部件和系统。我们将探索机器人的各个组成部分,包括软件(代码、命令和程序库)和硬件,以及它们是如何组合在一起的。在开始制作机器人时,考虑你想要的部件以及它们之间的关系是很有价值的。我建议您绘制机器人的草图--框图,作

    2024年02月13日
    浏览(35)
  • 机器人编程教程4为机器人准备无头Raspberry Pi

    本章将介绍以下内容: 什么是无头系统,为什么它对机器人有用? 在Raspberry Pi上设置Wi-Fi并启用SSH 在网络上找到你的Raspberry Pi 连接Raspberry Pi 配置Raspberry Pi操作系统 要求:一台 Raspberry Pi,最好是 3A+(但 Pi3或4也可以) 无头系统是指在键盘、屏幕和鼠标访问设备不方便的时间

    2024年02月13日
    浏览(36)
  • 机器人编程怎么入门?

    机器人已经在我们中间存在了二三十年。如今,机器人在我们的文化中比以往任何时候都更加根深蒂固。大多数机器人机器用于各种装配线,或在世界各地的矿山或工业设施中执行密集的物理操作。 还有一些家用机器人,工程师正在对机器人进行编程,以清洁您的房屋或执行

    2024年02月10日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包