首页 > 编程语言 >C/C++显示类型转换的位拓展方式

C/C++显示类型转换的位拓展方式

时间:2023-01-14 22:44:07浏览次数:37  
标签:类型转换 016llx 符号 拓展 0x0000000083c60ce1 C++ printf 0x%

最近用verilator写模块的tb,在这里卡了好久(测半天都是C++写的问题)

要点

变量从小位宽到大位宽显示类型转换(explicit cast)时的位拓展方式,取决于转换前变量的符号性

倘若转换前为无符号,则拓展为无符号拓展;反之则为有符号拓展。至于转换后的类型,是用来标记拓展后新值符号性用的,不决定拓展方式。

其实和verilog/systemverilog一致(有些忘了,记得有很多规则)。算是仅取决于RHS的情况

案例

uint32_t a = 0x83c60ce1;
printf("0x%016llx\n", a);		// 输出 0x0000000083c60ce1
printf("0x%016llx\n", (int64_t)a);	// 输出 0x0000000083c60ce1; (uint64_t也一样)
int32_t a = 0x83c60ce1;
printf("0x%016llx\n", a);		// 输出 0x0000000083c60ce1
printf("0x%016llx\n", (int64_t)a);	// 输出 0xffffffff83c60ce1; (uint64_t也一样)

标签:类型转换,016llx,符号,拓展,0x0000000083c60ce1,C++,printf,0x%
From: https://www.cnblogs.com/elucidator-xrb/p/17052701.html

相关文章

  • python教程6--自定义函数,数据类型转换,解方程
    本文主要讲解点如下:简单函数数据类型转换空函数自定义绝对值函数自定义函数检查参数类型函数返回多个值求解ax2+bx+c=0的根具体代码如下:'函数相关'__author__='mo......
  • C++ 序列化和反序列化
    序列化1、背景1、在TCP的连接上,它传输数据的基本形式就是二进制流,也就是一段一段的1和0。2、在一般编程语言或者网络框架提供的API中,传输数据的基本形式是字节,也就是Byte......
  • C++算法日记_1A
    题目链接:https://ac.nowcoder.com/acm/contest/19859/A题目来源:牛客网题目描述请统计某个给定范围[L,R]的所有整数中,数字2出现的次数。比如......
  • C++中如何将一行字符串(一行字符串可带空格)输入到string对象中或者字符数组中?
    提供两种方法:①、使用cin的成员函数getline,代码如下:charstr1[20];cin.getline(str1,20);     //第一个参数代表字符数组的指针,第二个参数代表写入的最大长度②、......
  • C++基础教程
    C++简介C++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。C++被认为是一种中级语言,它综合了高级语言......
  • c++ 多态
    一、什么是多态多态(Polymorphism)源自于希腊语,意思是“多种形状”。在C++中,允许通过基类型的指针或引用去访问派生对象中的函数,并允许需要执行的函数在运行时进行延迟绑......
  • C++学习开发路线
    C++等级:0级:掌握常见C++语法和语言构造,能够顺溜地写清楚各种语言构造(很多小白鼠死在这里)1级:掌握基本的编程范式:面向过程、面向对象、泛型编程、以及C++11/14支持的函数式......
  • C语言中类型转换的两种方式
    类型转换1.定义:不同类型的数据混合运算时需要进行类型转换(conversion),将不同类型的数据转换成相同类型的数据后再进行计算。2.分类:(1)隐式类型转换*编译系统自动进行转换。*在......
  • c++ 数组
              ......
  • C++立方体类
    #define_CRT_SECURE_NO_WARNINGS1#include<iostream>usingnamespacestd;//一、求出立方体类://1、创建立方体类//2、设计属性//3、设计行为:求出立方体的面积和体积//4、......