小编new*_*ser的帖子

尝试 - 最后阻止澄清

当我尝试在Java中执行以下函数时:

public static int myfunc (int x) {
    try {
        return x;
    } finally {
        x++;
    }       
}
public static void main (String args[]) {
    int y=5,z;
    z = myfunc(y);
    System.out.println(z);
}
Run Code Online (Sandbox Code Playgroud)

控制台上打印的输出为5,可以预期打印6.知道为什么吗?

java try-catch-finally try-finally

4
推荐指数
2
解决办法
273
查看次数

警告:左移计数> =类型的宽度[默认启用]

我有以下代码:

long int compute_data_length(unsigned char* buf, int data_offset) {

long int len;

if(!buf)
    return -1;

switch(data_offset) {
    case 2: {
                len = (buf[2] << 8) | buf[3];
            }
            break;
    case 8: {
                len = (buf[2] << 56) |
                      (buf[3] << 48) |
                      (buf[4] << 40) |
                      (buf[5] << 32) |
                      (buf[6] << 24) |
                      (buf[7] << 16) |
                      (buf[8] <<  8) |
                      (buf[9]      );
            }
            break;
    default: len = -1; break;
}
return len;
}
Run Code Online (Sandbox Code Playgroud)

编译时,我收到以下警告:

math_fun.c:240:21:警告:左移计数> =类型的宽度[默认启用] len =(buf …

c int bit-shift undefined-behavior unsigned-char

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