已知float y;int x=-3;执行语句y=x%2;后,变量y的值为_. (我在VC++中以printf("%d",y);输出结果为0.
(我在VC++中以printf("%d",y);输出结果为0.哪位能告诉我这是什么原因呢???...
(我在VC++中以printf("%d",y);输出结果为0. 哪位能告诉我这是什么原因呢???
展开
3个回答
展开全部
这里就有好几个问题了。
一,x%2得到整数-1.
二,赋值给float型变量y,执行了类型转换,成为浮点值-1.
三,调用printf函数,float型y被转化为double型的-1进行参数传递,传入了8字节。
四,printf函数根据%d,进行整数取值。而double占8字节,int占4字节,并且两者编码不同。double型的-1编码的低4位为0(编码为BFF00000 00000000),printf函数需要一个int值,于是把低四位的值作为int来解释,于是得到了结果0.
一,x%2得到整数-1.
二,赋值给float型变量y,执行了类型转换,成为浮点值-1.
三,调用printf函数,float型y被转化为double型的-1进行参数传递,传入了8字节。
四,printf函数根据%d,进行整数取值。而double占8字节,int占4字节,并且两者编码不同。double型的-1编码的低4位为0(编码为BFF00000 00000000),printf函数需要一个int值,于是把低四位的值作为int来解释,于是得到了结果0.
展开全部
x=-3 x%2;后,答案就是0呀
%是取模,仅对正数取的呀,你x是负数,当然是0了。
%是取模,仅对正数取的呀,你x是负数,当然是0了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
{
//下面这个语句创建一个对话框找到要运行的文件
CFileDialog dlg(false,"*.exe",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"EXE file(*.exe)|*.exe||");
if(dlg.DoModal()!=IDOK)return ;
//下面用system函数运行这个EXE程序。如果需要非阻塞方式运行,请用函数CreateProcesss()
system(dlg.GetPathName());
}
//下面这个语句创建一个对话框找到要运行的文件
CFileDialog dlg(false,"*.exe",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"EXE file(*.exe)|*.exe||");
if(dlg.DoModal()!=IDOK)return ;
//下面用system函数运行这个EXE程序。如果需要非阻塞方式运行,请用函数CreateProcesss()
system(dlg.GetPathName());
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询