51Testing软件测试论坛
标题:
b 定义为uint32_t为什么会等于-1?
[打印本页]
作者:
szxiaosong
时间:
2010-6-11 11:25
标题:
b 定义为uint32_t为什么会等于-1?
代码:
#include "lrs.h"
vuser_init()
{
typedef unsigned short int uint16_t;
typedef unsigned long int uint32_t;
uint16_t a;
uint32_t b;
int i;
lrs_startup(257);
a=0;b=0;
a--;b--;
lr_output_message("a INFO==>%i,%i",sizeof(a),sizeof(b));
for (i=1;i<10;i++) {
lr_output_message("INFO==>%i,%i",a,b);
a++;b++;
}
return 0;
}
执行结果:
vuser_init.c(13): a INFO==>2,4
vuser_init.c(15): INFO==>65535,-1
vuser_init.c(15): INFO==>0,0
vuser_init.c(15): INFO==>1,1
vuser_init.c(15): INFO==>2,2
vuser_init.c(15): INFO==>3,3
vuser_init.c(15): INFO==>4,4
vuser_init.c(15): INFO==>5,5
vuser_init.c(15): INFO==>6,6
vuser_init.c(15): INFO==>7,7
问题:
vuser_init.c(15): INFO==>65535,-1
a的输出是我们预想的。
但是b 定义为uint32_t为什么会等于-1?
作者:
szxiaosong
时间:
2010-6-11 15:49
技术贴要顶起
作者:
szxiaosong
时间:
2010-6-11 16:05
vs2008下测试本段代码
b=4294967295。
结论:loadrunner的bug。
热烈欢迎高手的不同意见
作者:
szxiaosong
时间:
2010-6-12 14:54
这个版,没有讨论的气氛
作者:
xavier_007
时间:
2010-6-12 18:03
lr_output_message("INFO==>%d,%ul",a,b);
这样输出是对的
不知道为啥
lr的c和vs中编译的c还是不一样的。也许mercury这么定义有他们的理由
例如我们平时用(for i =0; i<12; i++)
在lr必须先定义i
还有对字符指针的赋值等
[
本帖最后由 xavier_007 于 2010-6-12 18:04 编辑
]
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2