小编Oli*_*rth的帖子

组装 - 进位标志VS溢出标志

我有下一个代码:

mov al, -5
add al, 132
add al, 1
Run Code Online (Sandbox Code Playgroud)

当我检查时,溢出标志和进位标志将在第一个操作中设置,而在第二个操作中,仅设置溢出.

但我不明白为什么:

  1. 在无符号数字中,结果为143(8FH),为此适合8位无符号数(小于255)=>不应设置进位标志.在带符号的数字中,结果为127,它适合8位有符号,并且不应设置溢出.

怎么了?谢谢.

assembly

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

Java方法参考

我有一些使用这些方法的课程:

public class TestClass
{

    public void method1()
    {
        // this method will be used for consuming MyClass1
    }

    public void method2()
    {
        // this method will be used for consuming MyClass2
    }
}
Run Code Online (Sandbox Code Playgroud)

和班级:

public class MyClass1
{
}

public class MyClass2
{
}
Run Code Online (Sandbox Code Playgroud)

我想要HashMap<Class<?>, "question">在哪里存储(key:class,value:method)这样的对(类"type"与方法相关联)

hashmp.add(Myclass1.class, "question");
Run Code Online (Sandbox Code Playgroud)

我想知道如何添加方法引用到HashMap(替换"问题").

ps我来自C#,我只是写Dictionary<Type, Action>:)

java

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

对多维数组的一维访问:它是明确定义的行为吗?

我想我们都同意,通过以一维方式解引用(可能是偏移的)指向其第一个元素的指针来访问真正的多维数组被认为是惯用的C,例如:

void clearBottomRightElement(int *array, int M, int N)
{
    array[M*N-1] = 0;  // Pretend the array is one-dimensional
}


int mtx[5][3];
...
clearBottomRightElement(&mtx[0][0], 5, 3);
Run Code Online (Sandbox Code Playgroud)

然而,我的语言律师需要说服这实际上是明确定义的C!特别是:

  1. 是否标准保证编译器不会把填充例如,在中间mtx[0][2]mtx[1][0]

  2. 通常,索引关闭数组的末尾(除了结尾之外)是未定义的(C99,6.5.6/8).所以以下内容显然是未定义的:

    struct {
        int row[3];           // The object in question is an int[3]
        int other[10];
    } foo;
    int *p = &foo.row[7];     // ERROR: A crude attempt to get &foo.other[4];
    
    Run Code Online (Sandbox Code Playgroud)

    因此,根据相同的规则,人们会期望以下内容未定义:

    int mtx[5][3];
    int (*row)[3] = &mtx[0];  // The object in question is still an int[3]
    int *p = &(*row)[7]; …
    Run Code Online (Sandbox Code Playgroud)

c standards pointers multidimensional-array language-lawyer

16
推荐指数
2
解决办法
5774
查看次数

错误:"预期"('字符串常量之前'

致力于计算数组中值的几何平均值

该函数应该正确计算地理平均值,但我得到一个奇怪的错误消息

#include <stdio.h>
#include <stdint.h>
#include <math.h>


extern "C"

double geomean(double myarray[], int count)      ////error here, expected '(' before string constant
{
double geomean = 1;
double root = (1/(double)count);    
int i;
for(i = 0; i < count; i++)
    {
        geomean = geomean * myarray[i];
    }
geomean = pow(geomean, root);
return geomean;
}
Run Code Online (Sandbox Code Playgroud)

c

15
推荐指数
2
解决办法
3万
查看次数

_malloc究竟在汇编中做了什么?

public main
main proc near
push    ebp
mov     ebp, esp
and     esp, 0FFFFFFF0h
sub     esp, 30h
mov     dword ptr [esp], 8 ; size
call    _malloc
mov     [esp+2Ch], eax
mov     dword ptr [esp+4], 4
mov     eax, [esp+2Ch]
mov     [esp], eax
call    __start
Run Code Online (Sandbox Code Playgroud)

上面的代码代表了我正在处理的大型项目的一部分.我试图将此代码转换为C等效,但我很难理解malloc如何工作.

我估计8个字节将是被分配的内存的大小; 但是,我不确定这条线.

mov      eax, [esp+2ch] 
Run Code Online (Sandbox Code Playgroud)

malloc对eax做了什么?

那么这是等效的C代码吗?

int main(void)
{
int *ptr1;
ptr1 = (int *)malloc(sizeof(8));
*ptr1 = 4;
__start(*ptr1);
Run Code Online (Sandbox Code Playgroud)

c x86 assembly reverse-engineering

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

非const引用只能绑定到左值

有人可以解释一下如何模拟这个错误吗?以及这个抱怨的内容.

"在C++中,非const引用只能绑定到左值"

c++

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

用C#将温度显示为一种颜色?

有人知道一种以开尔文/摄氏度获得温度并返回RGB的算法吗?

就像热像仪一样.

我发现了一些链接:

http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_T.html

http://www.fourmilab.ch/documents/specrend/specrend.c

在此输入图像描述

但我不知道XYZ的颜色是什么?

在此输入图像描述

我只有摄氏温度..

我可以将其转换为任何温度的温度转换公式

更新: 黑体颜色数据文件 我发现了这个..但那些开尔文度是不可能的...我的意思是红色假设是热...所以为什么8000k是蓝色的,1000k是红色的...

algorithm colors temperature

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

C++将std :: map序列化为文件

我有一个C++ STL映射,它是int和customType的映射.customType是一个结构,它有字符串和字符串列表,如何将其序列化为文件.

示例结构:

struct customType{
string;
string;
int;
list<string>;
}
Run Code Online (Sandbox Code Playgroud)

c++ serialization stl

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

析构函数中的这个枚举是什么?

// Destructor.  If there is a C object, delete it.
// We don't need to test ptr_ == NULL because C++ does that for us  

    ~scoped_ptr() {
       enum { type_must_be_complete = sizeof(C) };
       delete ptr_;
    }
Run Code Online (Sandbox Code Playgroud)

注意:C是模板参数

我知道我们无法删除空指针,将引发异常.所以在这种情况下,枚举定义必须做一些事情来防止这种情况.在生产中,有时我们不想简单地结束程序,因为我们有一个空指针,当指针为空时,我们可能想要查看替代方案.而这个代码几乎用于生产?

多谢你们.

c++

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

如何确定列是否未签名?

我目前正在尝试列出特定表的所有列,并确定每列是否未签名.

这是我的测试夹具的一个例子:

CREATE TABLE ttypes
(
    cbiginteger BIGINT UNSIGNED,
    cinteger INT UNSIGNED,
    csmallinteger SMALLINT UNSIGNED
) ENGINE = InnoDB;
Run Code Online (Sandbox Code Playgroud)

为了列出特定表的所有列,我发现了两种可能性:

SHOW FULL COLUMNS
FROM ttypes;
Run Code Online (Sandbox Code Playgroud)

根据文档,此查询返回以下字段:字段,类型,空,默认,额外和注释.它们都不允许我确定列是否未签名.

之后,我查看information_schema.columns哪个是SHOW COLUMNS查询使用的基表.

SELECT ...
FROM information_schema.columns
WHERE table_name = 'ttypes';
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有结果字段允许我确定列是否未签名.

mysql database-metadata

14
推荐指数
2
解决办法
4294
查看次数