草庐IT

int_void

全部标签

c++ - 在 C++ 中使用按位运算符将 4 个字符更改为 int

我必须做的是以二进制模式打开一个文件,其中包含旨在解释为整数的存储数据。我见过其他例子,例如Stackoverflow-Reading“integer”sizebytesfromachar*array.但我想尝试采取不同的方法(我可能只是固执或愚蠢:/)。我首先在十六进制编辑器中创建了一个简单的二进制文件,内容如下。000000470000001700000041如果将12个字节分成3个整数,这(应该)等于71、23和65。以二进制模式打开此文件并将4个字节读入char数组后,如何使用按位运算使char[0]位成为int的前8位,依此类推,直到每个char的位是int的一部分。Myin

c++ - 对 void 及其含义的困惑。

我是编程的新手,对void的作用感到困惑,我知道当你把void放在函数前面时,它意味着“它什么都不返回”但是如果函数什么都不返回那么写的重点是什么功能??无论如何,我在作业中遇到了这个问题,我正在尝试回答它,但需要一些关于一般概念的帮助。任何帮助都会很棒,请尽量避免使用技术术语,我是这里的新手。这个函数完成了什么?voidadd2numbers(doublea,doubleb){doublesum;sum=a+b;} 最佳答案 voidReturnsNothing(){cout如您所见,此函数不返回任何内容,但这并不意味着该函数不执

c++ - 如果我将 double 转换为 int,但 double 的值超出范围会怎样?

如果我将double转换为int,但double的值超出范围会怎样?假设我做了这样的事情?doubled=double(INT_MIN)-10000.0;inta=(int)d;a的值是多少?是否未定义? 最佳答案 没错。引用标准4.9,“如果截断值不能在目标类型中表示,则行为未定义。” 关于c++-如果我将double转换为int,但double的值超出范围会怎样?,我们在StackOverflow上找到一个类似的问题: https://stackoverf

c++ - 这是什么意思? (int &)a

定义一个float变量a,将a转换为float&和int&,什么意思?转换后,a是对自身的引用?为什么两者的结果不同?#includeusingnamespacestd;intmain(void){floata=1.0;cout 最佳答案 cout第一个将a中的位视为float。第二个将a中的位视为int。float1.0的位恰好是整数1065353216的位。它基本上等同于:floata=1.0;int*b=(int*)&a;cout(int&)a将a转换为对整数的引用。换句话说,是对a的整数引用。(正如我所说,将a的内容视为整数

c++ - 是否可以将对象分配给 int?

我有一个CCounter类,它包含受互斥锁保护的整数值。我已经定义了几个运算符,例如post/preinc/dec返回一个整数,所以我可以这样做:CCounterc(10);inti=c++;但是我该如何处理像i=c这样的简单赋值呢?我试图定义friendoperator=但它给了我operator=(int&,constCCounter&)'必须是非静态成员函数错误。请指教。谢谢。 最佳答案 您需要定义一个从CCounter转换为int的转换运算符。将此成员添加到您的类(class):operatorint()const{retu

c++ - int 和 char 数组有什么区别?

下面的int和char数组有什么区别:intmain(){intnumbers[]={2,1,3};charletter[]={'a','b','\0'};cout输出:0x22ff12//anaddressab为什么不显示213?我知道数组的名称将指向其第一个元素的地址,但为什么char数组显示不同的行为吗? 最佳答案 没有operator确切地说,采用数组的重载,因此您传递的参数(例如numbers和letter)经过数组到指针的转换,变为void*和char*分别。operator过载这需要constvoid*,另一个需要co

c++ - 为什么 map<bool,int> m={{1,2},{3,4},{5,0}};尺寸 1 而不是 3?

很奇特:mapmb={{1,2},{3,4},{5,0}};coutmi={{1,2},{3,4},{5,0}};cout打印出来13 最佳答案 std::map是唯一键。1,3,5所有产量true转换为bool时. 关于c++-为什么mapm={{1,2},{3,4},{5,0}};尺寸1而不是3?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/28596881/

c++ - 关于返回 void 的文体问题

考虑以下人为的示例:voidHandleThat(){...}voidHandleThis(){if(That)returnHandleThat();...}这段代码工作得很好,我相当确定它是规范有效的,但我(也许是我自己)认为这种不寻常的风格,因为调用似乎返回了函数的结果,尽管事实上两者函数的原型(prototype)是无效的。通常,我希望看到:if(That){HandleThat();return;}我觉得,这对正在发生的事情没有任何歧义。SO社区,我能否就returning-void编码风格是否令人困惑或有问题征求意见?它有成语的感觉;我应该使用它还是避免使用它?通常我会力求清

c++ - 为什么我在声明中说 int *p = NULL ,但在测试中说 p != NULL ,为什么 *p != NULL 不匹配声明?

在C++中,如果我们将指针值赋给NULL,为什么不要我们检查*p!=NULL而不是p!=NULL?我在教程中找到了这段代码。int*p=NULL;char*q=NULL;//...if(p!=NULL)cout提前致谢 最佳答案 *正在做两件不同的事情。当您声明变量时,这意味着该变量是一个指针。当您使用变量时,它意味着“取消引用”,即获取指针指向的位置的值。两种完全不同的含义。 关于c++-为什么我在声明中说int*p=NULL,但在测试中说p!=NULL,为什么*p!=NULL不匹配声

c++ - 从 unsigned int (C++) 读取最左位的最快方法?

从unsignedint中读取最左边位的最快方法是什么? 最佳答案 i>>(sizeof(unsignedint)*CHAR_BIT-1)sizeof、乘法和减法将由任何合理的编译器在编译时计算,因此这应该成为一条右移指令,它的速度与您将获得的速度差不多。 关于c++-从unsignedint(C++)读取最左位的最快方法?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3344