我有这样的声明:
return *local_stack_var2++ + 42;
这些是分解时的正确步骤:
1
.取消引用local_stack_var2 2.将42添加到解除引用的local_stack_var2(函数实际上将返回此值)
3.在函数结束之前,它将激活后增量,递增值local_stack_var2指向的对象
那么在代码格式中,它会看起来像这样吗?
int temp = *local_stack_var2 //step 1;
int returnValue = temp + 42; //step 2, compiler will return THIS value
*local_stack_var2 = *local_stack_var2 + 1; //step 3
return returnValue;
Run Code Online (Sandbox Code Playgroud)
谢谢!
这是一个问题:
使用右 - 左规则编写一个名为fubar的变量的C定义,该变量是一个指向函数的指针,该函数接受一个指向char的指针并返回一个指向7个元素的数组的指针,其中每个元素都是一个指针到结构Sporcle.
我的答案:
*( (Sporcle*)[7] ) ( *fubar )( char* );
任何人都可以验证我的答案和/或给我一些指示(没有双关语)?
编辑答案:
( (struct Sporcle*)[7] ) *( *fubar )( char* );
最终答案
struct Sporcle *(*(*fubar)(char *))[7];
假设我有一个 Perl 变量:
my $string = "40.23";
my $convert_to_num = $string * 1;
有没有办法找到这个浮点值的精度?到目前为止,我的解决方案是简单地循环遍历字符串,找到“.”的第一个实例,然后开始计算小数位数,在本例中返回 2。我只是想知道是否有更优雅或内置的函数来处理这类事情。谢谢!
我正在尝试编写一个bash脚本,它将接受一个可选参数,并根据该参数的值,使用该参数作为预处理器指令编译代码.到目前为止这是我的文件:
#!/bin/bash
OPTIMIZE="$1"
if[ $OPTIMIZE = "OPTIMIZE" ] then
echo "Compiling optimized algorithm..."
gcc -c -std=c99 -O2 code.c -D $OPTIMIZE
else
echo "Compiling naive algorithm..."
gcc -c -std=c99 -O2 code.c
fi
Run Code Online (Sandbox Code Playgroud)
但是,它似乎不喜欢"-D"选项,抱怨在-D之后缺少宏名称.我的印象是-D定义了一个新的宏(为1),其名称为指定的内容.我希望"OPTIMIZE"成为该宏的名称.任何提示?
我正在编写一个名为isOdd的小型汇编程序,顾名思义,如果传递的整数是奇数,则通过从%运算返回1来返回.
到目前为止这是我的代码:
Function prototype: int isOdd( long num )
isOdd:
save %sp, -96, %sp ! Save caller's window
mov %i0, %o0 ! Parameter num goes to %o0
mov 2, %l0 ! 2 goes to local register
call .rem ! Call modulus subroutine
nop
mov %o0, %l0 ! moves the result of the subroutine
! to output register o0
ret
restore
Run Code Online (Sandbox Code Playgroud)
但是,我没有得到好的输出; 事实上,它似乎只是返回我传递给num的任何值,而不是实际进行模数运算.
谷歌对这样一个基本问题没有任何帮助.这是我的第一个汇编代码,所以我对"寄存器"的概念非常不熟悉,我认为将它们混合在一起就是我的错误所在.
在此先感谢您的帮助!