小编lor*_*ara的帖子

C中的运算符优先级 - 返回值

我有这样的声明:

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)

谢谢!

c return operators operator-precedence

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

定义变量时复杂的"从右到左"规则

这是一个问题:
使用右 - 左规则编写一个名为fubar的变量的C定义,该变量是一个指向函数的指针,该函数接受一个指向char的指针并返回一个指向7个元素的数组的指针,其中每个元素都是一个指针到结构Sporcle.

我的答案:

*( (Sporcle*)[7] ) ( *fubar )( char* );

任何人都可以验证我的答案和/或给我一些指示(没有双关语)?

编辑答案:

( (struct Sporcle*)[7] ) *( *fubar )( char* );

最终答案

struct Sporcle *(*(*fubar)(char *))[7];

c variables pointers right-to-left

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

在 Perl 中获取浮点数的精度?

假设我有一个 Perl 变量:

my $string = "40.23";

my $convert_to_num = $string * 1;

有没有办法找到这个浮点值的精度?到目前为止,我的解决方案是简单地循环遍历字符串,找到“.”的第一个实例,然后开始计算小数位数,在本例中返回 2。我只是想知道是否有更优雅或内置的函数来处理这类事情。谢谢!

string floating-point perl decimal

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

尝试在bash脚本中通过命令行传递预处理程序指令

我正在尝试编写一个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"成为该宏的名称.任何提示?

c bash macros gcc c-preprocessor

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

编写一个非常基本的SPARC程序例程会导致数字是否为奇数

我正在编写一个名为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的任何值,而不是实际进行模数运算.

谷歌对这样一个基本问题没有任何帮助.这是我的第一个汇编代码,所以我对"寄存器"的概念非常不熟悉,我认为将它们混合在一起就是我的错误所在.

在此先感谢您的帮助!

assembly sparc

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