首页 > 编程语言 >c++随笔测试(Corner of cpp)

c++随笔测试(Corner of cpp)

时间:2022-12-23 15:57:47浏览次数:43  
标签:符号 int unsigned c++ char cpp Corner foo

  • 在c++17下,程序的输出是什么?(有可能编译出错,有可能输出未知,有可能是未定义行为)
点击查看代码
#include<iostream>

void foo(unsigned int) {std::cout<<"uint";}
void foo(int) {std::cout<<"int";}
void foo(char) {std::cout<<"char";}

int main(){
	char a=1;
	char b=2;
	foo(a+b);
	return 0;
}

答案
输出未知,根据不同实现会有不同结果

char类型在c++中,根据不同平台会拥有不同的符号属性和表示范围。
从c++11开始,char的符号属性将依据编译器和目标平台。ARM和PowerPC默认是无符号,
而x86和x64默认是有符号的。同时char的位数则是根据宏CHAR_BIT(在c头文件climits中)。
c++的基本二元运算符在进行运算时会进行一些类型转换,对于整数来说,它们都需要进行整型提
升。
简略来说为:在计算式,首先会把各个数提升到int,如果int无法表示,那就升到unsigned int。
以题目为例,正常来说int足够表示char的所有值,所以一般调用foo(int),但是在特定平台下,
比如16位计算机同时设定char为无符号,这时int无法表示char,所以会提升到unsigned int,
调用foo(unsigned int)。
所以此程序的输出是未知的,取决于平台的实现。

标签:符号,int,unsigned,c++,char,cpp,Corner,foo
From: https://www.cnblogs.com/AlongtheJourney/p/17000823.html

相关文章

  • C++中map用法详解
    Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1.map最基本的构造函数;map<string,......
  • c++ 读取Ini文件
    头文件#include<atlstr.h> C++读取INI文件-疯封风-博客园(cnblogs.com)......
  • 获取本机内网、外网ip(C++)
    基础知识  电脑在局域网内,通过网关/路由器连接到Internet则ip分为内网ip、外网ip。通过ipconfig得到的为局域网ip。电脑直接拨号连接等,则本机通过ipconfig得到的就......
  • C++提取出std::map中的key集合
    std::map<std::string,uint32_t>dictionarystd::set<conststd::string*>keySet;//std::back_inserter(keyVector)std::transform(dictionary.begin(),dictiona......
  • c++通过DPI连接达梦数据库
    通过ODBC连接上数据库后,同事让我换内网电脑开发,又换了数据库给我,结果怎么都连不上数据库,又尝试了DPI连接达梦数据库的方式,连接上了,记录如下。连接代码#include"StdAfx.......
  • Intellij Java JNI 调用 C++
    也可以用JNA,但性能没有JNI 好。JNA的Demo没有做,可以参考(​​https://www.bilibili.com/video/BV1xU4y1F7Ep/?spm_id_from=autoNext​​)JNI 参考(​​https://www.runoob.......
  • 组合模式javac++
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解组合模式的动机,掌握该模式的结构;2、能够利用组合模式解决实际问题。 [实验任务一]:组合模式用透明组合......
  • C++学习---cstdio的源码学习分析10-改变文件流文件流buffer函数setvbuf
    cstdio中的文件访问函数stdio.h中定义了一系列文件访问函数(fopen,fclose,fflush,freopen,setbuf,setvbuf),接下来我们一起来分析一下setvbuf对应的源码实现。-fopen:打开文件-......
  • 观察者模式——C++实现
    问题截图:当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价格下降时会大哭一场。类图:  代码:#include<iostream>#includ......
  • C++——拷贝构造和运算符重载
    1.拷贝构造函数1.值传递#include<iostream>usingnamespacestd;classdate{public:date(intyear=1,intmonth=1,intday=1)//全缺省构造{_year=year;......