b 定义为uint32_t为什么会等于-1?
代码:#include "lrs.h"
vuser_init()
{
typedef unsigned short int uint16_t;
typedef unsignedlong 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? 技术贴要顶起 vs2008下测试本段代码
b=4294967295。
结论:loadrunner的bug。
热烈欢迎高手的不同意见 这个版,没有讨论的气氛 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 编辑 ]
页:
[1]