0%

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<iostream>
#include<stdio.h>

using namespace std;

struct test1 {
//cpu中内存对齐分配
char a;//4个字节
int b;//4个字节
char c;//4个字节
};<!--more-->
struct test2 {
//cpu中内存对齐分配
char a;//2个字节
char b;//2个字节
int c;//4个字节
};
union {
char a;
int b;
} test3;
int main(void) {
test1 a;
cout<<sizeof(a)<<endl;
test2 b;
cout<<sizeof(b)<<endl;
test3.b=1;
if(test3.a==1)
cout<<"小端模式"<<endl;
else
cout<<"大端模式"<<endl;
return 0;
}

一、计算机系统概论

1. 冯诺依曼计算机组成

主机(cpu+内存),外设(输入设备+输出设备+外存),总线(地址总线+数据总线+控制总线)

阅读全文 »

Java 谜题 Java 谜题 5——类谜题

谜题 46:令人混淆的构造器案例 令人混淆的构造器案例

本谜题呈现给你了两个容易令人混淆的构造器。main 方法调用了一个构造器,

但是它调用的到底是哪一个呢?该程序的输出取决于这个问题的答案。那么它到

底会打印出什么呢?甚至它是否是合法的呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Confusing { 

private Confusing(Object o) {

System.out.println("Object");

}

private Confusing(double[] dArray) {

System.out.println("double array");

}

public static void main(String[] args) {

new Confusing(null);

}

}
阅读全文 »

Java 谜题 Java 谜题 4——异常谜题

谜题 36:优柔寡断

下面这个可怜的小程序并不能很好地做出其自己的决定。它的 decision 方法将

返回 true,但是它还返回了 false。那么,它到底打印的是什么呢?甚至,它是

合法的吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Indecisive { 

public static void main(String[] args) {

System.out.println(decision());

}

static boolean decision() {

try {

return true;

} finally {

return false;

}

}

}
阅读全文 »

Java 谜题 Java 谜题 3——循环谜题

谜题 24:尽情享受每一个字节 尽情享受每一个字节

下面的程序循环遍历 byte 数值,以查找某个特定值。这个程序会打印出什么呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class BigDelight { 

public static void main(String[] args) {

for (byte b = Byte.MIN_VALUE; b < Byte.MAX_VALUE; b++) {

if (b == 0x90)

System.out.print("Joy!");

}

}

}

这个循环在除了 Byte.MAX_VALUE 之外所有的 byte 数值中进行迭代,以查找

0x90。这个数值适合用 byte 表示,并且不等于 Byte.MAX_VALUE,因此你可能会

想这个循环在该迭代会找到它一次,并将打印出 Joy!。但是,所见为虚。如果

你运行该程序,就会发现它没有打印任何东西。怎么回事?

阅读全文 »