奇怪的数据类型问题
Odd data type issue
我是 C++ 的新手,不明白发生了什么。我正在尝试转换 Lua double
arg。数据类型为 uint8_t
。应用程序编译没有任何问题 - 但是,当我没有从变量中得到任何结果 - 就像它是空的一样。
#include <iostream>
#include <netinet/in.h>
#include <sstream>
#include "lua.h"
using namespace std;
int _lua_function(lua_State* L) {
int step = lua_tonumber(L, 1);
ostringstream oss;
oss << "Step is:" << step;
return 0;
}
输出为:Step is: 22
当我改变
int step = lua_tonumber(L, 1);
到
uint8_t step = static_cast<uint8_t> (lua_tonumber(L, 1));
输出变为:Step is:
为什么我只是因为数据类型改变而没有从变量中得到任何结果?
我会说 uint8_t
在您的平台上与 unsigned char
相同。当将值为 22
的 unsigned char
插入 ostringstream
时,您在输出中看不到 22
,而是 22
表示的字符,这是一个不可打印的字符。
你可以试试
uint8_t s = 22;
std::cout << s << std::endl;
看到同样的效果。
我是 C++ 的新手,不明白发生了什么。我正在尝试转换 Lua double
arg。数据类型为 uint8_t
。应用程序编译没有任何问题 - 但是,当我没有从变量中得到任何结果 - 就像它是空的一样。
#include <iostream>
#include <netinet/in.h>
#include <sstream>
#include "lua.h"
using namespace std;
int _lua_function(lua_State* L) {
int step = lua_tonumber(L, 1);
ostringstream oss;
oss << "Step is:" << step;
return 0;
}
输出为:Step is: 22
当我改变
int step = lua_tonumber(L, 1);
到
uint8_t step = static_cast<uint8_t> (lua_tonumber(L, 1));
输出变为:Step is:
为什么我只是因为数据类型改变而没有从变量中得到任何结果?
我会说 uint8_t
在您的平台上与 unsigned char
相同。当将值为 22
的 unsigned char
插入 ostringstream
时,您在输出中看不到 22
,而是 22
表示的字符,这是一个不可打印的字符。
你可以试试
uint8_t s = 22;
std::cout << s << std::endl;
看到同样的效果。