我正在阅读GNU PDF库的源代码,特别是它们对64位整数的实现.他们将64位整数定义为两个32位整数的结构 - 高阶int是有符号的,低阶int是无符号的.这是头文件中的相关代码:
/*Definition of internal structure of the pdf_i64_t type*/
struct pdf_i64_s
{
pdf_i32_t high;
pdf_u32_t low;
};
typedef struct pdf_i64_s pdf_i64_t;
Run Code Online (Sandbox Code Playgroud)
根据架构手册,负数以二进制补码形式表示.我对此功能有疑问:
[来自pdf-types.c的代码]
void pdf_i64_assign_quick (pdf_i64_t *bignum,
const pdf_i32_t value,
pdf_status_t *p_status)
{
ASSIGN_SAFE(p_status, PDF_OK);
if (bignum != NULL)
{
if (value < 0)
{
bignum->high = 0xFFFFFFFF;
}
else
{
bignum->high = 0;
}
bignum->low = value;
}
else
{
ASSIGN_SAFE(p_status, PDF_ERROR);
}
}
Run Code Online (Sandbox Code Playgroud)
根据我的阅读,要获得数字的二进制补码,您需要反转所有位并将结果加1.但是在上面的函数中,对于值<0,它们只是将高阶位设置为0xFFFFFFFF,而根本不改变低阶位.不应该将'value'的位反转,然后加1?有人可以解释一下吗?
谢谢.
我在这里做一些基于策略的设计,我需要输入大量的模板类型来缩短名称.
现在的问题是,当我需要使用指向其中一种类型的指针时,我尝试只是向前声明它,但编译器抱怨test.cpp:8: error: using typedef-name ‘Test1’ after ‘class’
它与尺寸无关,因为我根本不需要obj,它只是一个".h"文件中的指针,我不想把整个模板带进去.
这是g ++:
//Works
class Test{};
class Test;
//Doesn't work
class Test{};
typedef Test Test1;
class Test1;
Run Code Online (Sandbox Code Playgroud)
任何提示?
你好我做了一个SQL测试,对一个问题很怀疑/好奇:
哪个序列是SQL引擎执行的查询和子查询?
答案是
我选择了最后一个答案(假设它是最可靠的其他人).现在的好奇心:
我在哪里可以读到这一点,简要说明所有这些机制是什么?
谢谢.
我无法理解为JqueryUI日历设置日期范围的语法.
这个...
$(function() {
$('#DOB').datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'd MM yy',
minDate: new Date(1900, 11 - 1, 6)
});
});
Run Code Online (Sandbox Code Playgroud)
奇怪地给了我2000 - 2020年的范围.我想做的是从1900年开始.结束日期可以是今天.
我有以下代码:
class Program
{
static void Main(string[] args)
{
Console.WriteLine(SqrtRoot(0));
Console.WriteLine(SqrtRoot(10));
Console.WriteLine(SqrtRoot(-10));
Console.ReadKey();
}
public static int SqrtRoot(int i)
{
Contract.Requires(i >= 0);
return (int)Math.Sqrt(i);
}
}
Run Code Online (Sandbox Code Playgroud)
我在调试模式下运行它,它应该在最后一行触发某种错误
Console.WriteLine(SqrtRoot(-10));
Run Code Online (Sandbox Code Playgroud)
尽管如此,它还没有.它似乎忽略了Contract.Requires()调用.在尝试使用代码合同时,我应该设置一些东西吗?
我正在使用Visual Studio 2010 RC.
谢谢
我在Mac OS X 10.6.2上使用cakephp中的"cake"控制台.如何设置环境变量(或PATH?),以便我在终端中输入的所有内容都是"蛋糕"...而不是控制台应用程序的完整路径?
当谈到终端命令和这些UNIX的东西时,我毫不掩饰地说是新手(但我正在学习!),如果我的解释/词汇有点偏差,请耐心等待.
如果我们设置一个配置文件Django如何建议:
class Profile(models.Model):
user = models.ForeignKey(User, unique=True)
Run Code Online (Sandbox Code Playgroud)
然后当你User从Django admin 删除对象时,它也删除了他的配置文件.这是因为配置文件有一个外键给用户,它想保护参照完整性.但是,即使指针朝另一个方向发展,我也想要这个功能.例如,在我的Profile课上我有:
shipper = models.ForeignKey(Shipper, unique=True, blank=True, null=True)
carrier = models.ForeignKey(Carrier, unique=True, blank=True, null=True)
affiliat = models.ForeignKey(Affiliate, unique=True, blank=True, null=True, verbose_name='Affiliate')
Run Code Online (Sandbox Code Playgroud)
我想要它,以便如果你删除Profile它将删除相关的托运人/承运人/联盟对象(不要问我为什么Django做了"联盟"一些奇怪的关键字).因为托运人,承运人和附属公司是用户的类型,没有剩下的数据就没有意义存在(没有人可以作为一个人登录).
我没有把键放在其他对象上的原因是因为每当我想检查用户是哪种类型时,Django就必须在内部加入所有这些表.
不确定这是否可行,但可能有一种创造性的方法......
鉴于SQL Server 2005中的这些数据:
AAA
AAA
BBB
BBB
CCC
CCC
DDD
DDD
我怎样才能返回以这样的模式排序的结果集:
AAA
BBB
CCC
DDD
AAA
BBB
CCC
DDD
我想要一个win32程序,它采用桌面和行为,就像它是粉碎玻璃,最后会把这些碎片重新组合在一起是否有参考用C++做这种效果?