为什么超过100的值会变成负数?

时间:2019-03-07 19:21:44

标签: printf

我正在使用C ++进行反序列化。我得到了数据流,并将其传输到char数组。目前,一切工作正常,除非该值超过100,我返回的值变为负值。例如241变为-15,但低于100的值保持不变。

这是我正在运行的代码

char streamBuffer[1024]; //where the stream data is held
 /**code in between that transfer data stream to streamBuffer[]**/

char printBuffer[10];

for(int i = 0; i < 10 ; i++){
       sprintf(printBuffer, "streamData = %ld",streamBuffer[i]);
       PrintData(printBuffer); //prints the value
}

例如,我的流数据看起来像1,3,5,10,241等。

当我获得printData函数时,它为我提供了似乎小于100的任何值的正确值。

我用过

sprintf(printBuffer, "streamData = %lld",streamBuffer[i]);

sprintf(printBuffer, "streamData = %d",streamBuffer[i]);

但是我仍然没有获得正确的值。

所以我的输出将如下所示。

StreamData: 1
StreamData: 3
StreamData: 5
StreamData: 10
StreamData: -15

1 个答案:

答案 0 :(得分:0)

解决方案是在sprintf语句中将char streamBuffer [1024]更改为未签名的char streamBuffer [1024],然后将%ld更改为%u。现在,超过100的值保持不变。