问题列表 - 第25538页

C:8x8 - > 16位乘法精度由整数提升保证?

我试图找出C标准(C90,虽然我正在使用Derek Jones的注释C99书),但我保证不会丢失精度乘以两个无符号8位值并存储到16位结果.示例声明如下:

unsigned char foo;
unsigned int foo_u16 = foo * 10;
Run Code Online (Sandbox Code Playgroud)

我们的Keil 8051编译器(目前为v7.50)将生成一个MUL AB指令,该指令将MSB存储在B寄存器中,LSB存储在累加器中.如果我先将foo转换为unsigned int:

unsigned int foo_u16 = (unsigned int)foo * 10;
Run Code Online (Sandbox Code Playgroud)

然后编译器正确地决定我在那里使用unsigned int并生成对16x16位整数乘法例程的昂贵调用.我想毫无疑问地争辩说这种防御措施是没有必要的.当我读取6.3.1.1中描述的整数提升时,第一行的效果应该是foo和10被提升为unsigned int,执行乘法,结果存储为foo_u16中的unsigned int.如果编译器知道一条指令执行8x8-> 16位乘法而不会损失精度,那就更好了; 但精度得到保证.我读得对吗?

此致,Craig Blome

c standards language-features integer-promotion

5
推荐指数
1
解决办法
1059
查看次数

如何获得PHP"setrawcookie"的价值?

IETF建议对二进制cookie值使用base64编码:http: //tools.ietf.org/html/draft-ietf-httpstate-cookie-07

所以我使用setrawcookie(..)但我不知道用什么变量来获取cookie,因为$_COOKIE[..]仍然使用匹配的URL解码setcookie(..).这会在输出中将"+"替换为"".

<?php

var_dump($_COOKIE['TEST']);
$binary_string = "";
for($index = 0; $index < 256; $index++){
    $binary_string .= chr($index);
}
$encoded_data = base64_encode($binary_string);
var_dump($encoded_data);
$cookie_set = setrawcookie('TEST', $encoded_data, time() + 3600);
?>
Run Code Online (Sandbox Code Playgroud)

php cookies cgi http

3
推荐指数
1
解决办法
3312
查看次数

imagerotate()中的背景transperancy

从最近2天开始,我试图在使用imagerotate()PHP-GD函数旋转图像后为后台添加transperancy.

但是,令我非常失望的是,它根本不起作用.

它只是在它后面发出黑色背景.

这是我的代码 -


$patchImageS    =   'image.png'; // the image to be patched over the final bg
$patchImage =   imagecreatefrompng($patchImageS); // resource of image to be patched
$patchImage     =   imagerotate($patchImage, 23, 0, 0);
imagepng($patchImage,'tt.png');

我试图将函数中传递的参数更改为

imagerotate($ patchImage,23,5,0);

imagerotate($ patchImage,23,0,5);

任何帮助将受到高度赞赏.

php gd

4
推荐指数
1
解决办法
6581
查看次数

1
推荐指数
1
解决办法
698
查看次数

如何从c#调用javascript函数

我喜欢从c#调用JavaScript函数.任何人都可以给我代码片段.

更多详情...

我有一个asp.net页面,它有一个asp按钮.当我点击该按钮时,我想调用javascript函数.

喜欢......

在我的asp.net页面中,

<button id="save" onclick="i like to call a method resides in asp.net page'>Save</button>
Run Code Online (Sandbox Code Playgroud)

越来越多的细节...当点击asp.net按钮时,我喜欢执行一些服务器端操作,然后喜欢从那里调用一个javascript函数...

javascript asp.net events

5
推荐指数
2
解决办法
7万
查看次数

垂直鼠标滚轮在VS 2010 Ultimate中无效

我尝试了两种不同的鼠标 - 这两种鼠标在所有其他应用程序中都能很好地工作.鼠标是MS Intellimouse Optical.我甚至试图通过鼠标实用程序加速垂直滚动,但仍然没有.

它几乎没有移动代码然后停止.我对VS 2008没有任何问题,它同时安装在同一台机器上.

我是唯一有这个的人吗?

visual-studio-2010 visual-studio

9
推荐指数
1
解决办法
6249
查看次数

读取PPM文件并将其存储在数组中; 用C编码

我需要读取一个PPM文件并将其存储在用C编写的数组中.任何人都可以帮我做这个吗?

非常感谢.

c ppm

8
推荐指数
2
解决办法
5万
查看次数

自从改革开始以来,流产的旧git rebase和丢失的提交

扯淡!大约一个星期前,我在尝试清理我的存储库时,正在重新设置一些提交,显然我实际上没有完成它.今天,一个星期和几个提交之后,我从今天开始重新订购一些提交,它告诉我,我已经处于变革的中间.

这应该是复制我的回购以防万一的提示.但我没有...而是我git rebase --abort当时听起来正确.嗯,那不对.它从一周前中止了反转,并将主人的HEAD重置为旧的.假!

我还有其他几个相当近的分支,我已经多次推到远程,但最近的变化似乎永远消失了.我没有适当级别的git-fu知道是否有任何方法可以恢复我的更改.

我搞砸了吗?

编辑 - 哇!多谢你们!git reflog太棒了!我已经完全恢复了......经验教训.标记Tchalvak的答案被接受为第一个发布.

git git-rebase

65
推荐指数
2
解决办法
1万
查看次数

C++:对象的向量与指向新对象的指针的向量?

我正在寻求通过编写示例软件渲染器来提高我的C++技能.它采用由3d空间中的点组成的对象,并将它们映射到2d视口,并为视图中的每个点绘制不同大小的圆.哪个更好:

class World{
    vector<ObjectBaseClass> object_list;
public:
    void generate(){
        object_list.clear();
        object_list.push_back(DerivedClass1());
        object_list.push_back(DerivedClass2());
Run Code Online (Sandbox Code Playgroud)

要么...

class World{
    vector<ObjectBaseClass*> object_list;
public:
    void generate(){
        object_list.clear();
        object_list.push_back(new DerivedClass1());
        object_list.push_back(new DerivedClass2());
Run Code Online (Sandbox Code Playgroud)

?? 在第二个例子中使用指针来创建新对象会破坏使用向量的点,因为向量会在第一个示例中自动调用DerivedClass析构函数而不是在第二个示例中调用DerivedClass析构函数吗?在使用向量时是否需要指向新对象的指针,因为只要您使用其访问方法,它们本身就会处理内存管理?现在让我们说我在世界上有另一种方法:

void drawfrom(Viewport& view){
    for (unsigned int i=0;i<object_list.size();++i){
        object_list.at(i).draw(view);
    }
}
Run Code Online (Sandbox Code Playgroud)

调用时,这将为世界列表中的每个对象运行draw方法.假设我希望派生类能够拥有自己的draw()版本.为了使用方法选择器( - >),列表是否需要指针?

c++ pointers vector

27
推荐指数
3
解决办法
4万
查看次数

堆栈内存上的free()

我在Solaris上支持一些c代码,至少我认为它是奇怪的:

char new_login[64];
...
strcpy(new_login, (char *)login);
...
free(new_login);
Run Code Online (Sandbox Code Playgroud)

我的理解是,由于变量是本地数组,因此内存来自堆栈而不需要释放,而且由于没有使用malloc/calloc/realloc,因此行为未定义.

这是一个实时系统,所以我认为这是浪费周期.我错过了一些明显的东西吗

c free stack garbage-collection memory-management

8
推荐指数
2
解决办法
8428
查看次数