#P1370. Vasya and Types
Vasya and Types
题目描述
程序员 Vasya 正在学一种新的语言,在这个语言里,你可以做以下两种操作:
- 给一个变量的赋值:
typedef A B
- 输出这个变量的类型:
typeof A
在这个语言里只有两种基础值:void
和 errtype
。他还有强大的指针系统,你可以给一个变量用 *
加上若干个指针,也可以用 &
去掉若干个指针,赋值规则如下:
- 当
*
的个数小于&
的个数时,该变量会被永久赋值为errtype
; - 有一种行为被称为未定义行为,即你在这个变量未赋值时将其用于赋值;
- 当你做了一个未定义行为时,被赋值和赋值或被输出的变量将被临时赋值为
errtype
; - 任何对
errtype
进行的操作视为无效。
给定 次操作,请输出每次 typeof
将输出的值。
输入格式
第一行一个整数 ,。
接下来 行,每行一个操作。
输出格式
若干行,对于每一个 typeof A
操作,输出对应结果。
5
typedef void* ptv
typeof ptv
typedef &&ptv node
typeof node
typeof &ptv
void*
errtype
void
17
typedef void* b
typedef b* c
typeof b
typeof c
typedef &b b
typeof b
typeof c
typedef &&b* c
typeof c
typedef &b* c
typeof c
typedef &void b
typeof b
typedef b******* c
typeof c
typedef &&b* c
typeof c
void*
void**
void
void**
errtype
void
errtype
errtype
errtype