环礁和(长整型)的区别?
Difference between atoll and (long int)?
如果这是一个糟糕的问题,请原谅我。很可能是。但我的印象是(long int)[some string]
应该将字符串转换为长整型。情况似乎并非如此,因为我刚刚编写了一个示例程序。
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char **argv)
{
int firstNum = atoll(argv[1]);
int secondNum = atoll(argv[2]);
int sum = firstNum + secondNum;
long int firstArg = (long int)argv[1];
long int secondArg = (long int)argv[2];
long int argSum = firstArg + secondArg;
cout << "The argSum is: " << argSum << ", which is same as sum: " << sum << endl;
}
我之所以有这种印象,是因为我正在阅读的代码。解释会帮助我建立一些知识。谢谢。
srv.request.a = atoll(argv[1]);
srv.request.b = atoll(argv[2]);
if (client.call(srv))
{
ROS_INFO("Sum: %ld", (long int)srv.response.sum);
}
atoll
是一个函数,它解析字符串以产生它表示为long long
的数值(然后将其填充到int
中)。
强制转换是(long int)arg[0]
正在执行的操作,它告诉编译器将一个值解释为另一种类型。 在您的情况下,您尝试解释的内容是指向字符的指针,而不是由它指向其开头的字符串表示的值。
的印象是(long int)[some string]应该将字符串转换为long int。
这是不正确的。
它的作用是获取表示字符串的指针值并将其转换为long int
。没有人知道从程序的一次运行到下一次运行的价值是多少。
另一方面,使用atoll(argv[1])
从字符串中正确提取数字。
我的印象是(long int)[some string]应该将字符串转换为long int。
你误会了。显式转换(也称为强制转换)不执行任何此类操作。将"指向char
的指针"(这是字符串的类型)转换为整数将导致指针指向的地址的整数值 - 如果目标整数类型无法表示内存地址值,则可能会失去精度。
环礁和(长整型)的区别?
atoll
根据字符串内容表示的数字将字符串转换为整数值。
显式转换根据参数的类型具有不同的行为,但在字符指针的情况下,请参阅上面的段落。
(long int)[some string]是一个强制转换,它不对数据进行实际处理,它只是告诉编译器解释任何数据[一些字符串]就好像它是一个长整数一样,在这种情况下,您将看到字符串在内存中的偏移量,因为C字符串只是指向某些数据的指针。
环礁是一个解析字符串并将文本转换为整数值的函数。
- C 字符串返回字符串的整数/双精度/长整型值
- 无法在 Arduino 中uint8_t数组转换为无符号长整型数组
- JNI 日期值转换问题,在C++中获取不同的长整型值
- 将长整型值打印为带有前导零的十六进制
- 为什么在传递长整型时调用具有两个双精度类型的参数的重载函数?
- 提升不良词法强制转换:将字符串转换为无符号长整型时,无法将源类型值解释为目标
- 将最小值整数转换为无符号长整型
- 如何将小端格式的QByteArray转换为无符号长整型
- 无符号长整型和无符号 int 之间有什么区别,这 2 种类型应该如何在 c# 中封送?
- 环礁和(长整型)的区别?
- 将逗号格式化为长整型整数
- 如何将长整型传递给 itoa 函数?
- 是否存在将长整型转换为指针有效的情况
- 在 C++ 中创建一对长整型和矢量时出现编译错误
- 当我使用长整型时,我的代码不起作用,它与 int 一起工作得很好
- 将字符串中以十六进制形式存储的负长整型值转换为 C++ 中的长整型变量
- 为什么当我们把变量"u"的数据类型从长整型更改为整型时,模幂会出错?
- 错误:请求从 std::chrono::time_point 浮点数转换为非标量类型长整型
- 如何以优雅高效的方式将无符号/有符号整数/长整型转换为 C 字符串?
- 将 BYTE 数组转换为无符号长整型