cq.c
来自「lcc,一个可变目标c语言编译器的源码」· C语言 代码 · 共 2,862 行 · 第 1/5 页
C
2,862 行
}/* Finally, structures and unions are addressed thusly: */ if(pd0->dprec != (*pd0).dprec){ rc = rc+32; if(pd0->flgd != 0) printf(s71er,32); } return rc;}McCarthy(x)int x;{ if(x>100) return x-10; else return McCarthy( McCarthy(x+11));}clobber(x,y)int x, *y;{ x = 3; *y = 2;}s714(pd0) /* 7.14 Assignment operators */struct defs *pd0;{ static char f[] = "Local error %d.\n"; static char s714er[] = "s714,er%d\n"; static char qs714[8] = "s714 "; register int prlc, lrc; int rc; char cl, cr; short sl, sr; int il, ir; long ll, lr; unsigned ul, ur; float fl, fr; double dl, dr; char *ps, *pt; ps = qs714; pt = pd0->rfs; rc = 0; lrc = 0; prlc = pd0->flgl; while (*pt++ = *ps++); /* This section tests the assignment operators. It is an exhaustive test of all assignment statements of the form: vl op vr where vl and vr are variables from the set {char,short,int,long,unsigned,float,double} and op is one of the assignment operators. There are 395 such statements. The initial values for the variables have been chosen so that both the initial values and the results will "fit" in just about any implementation, and that the re- sults will be such that they test for the proper form- ation of composite operators, rather than checking for the valid operation of those operators' components. For example, in checking >>=, we want to verify that a right shift and a move take place, rather than whether or not there may be some peculiarities about the right shift. Such tests have been made previously, and to repeat them here would be to throw out a red herring. The table below lists the operators, assignment targets, initial values for left and right operands, and the expected values of the results. = += -= *= /= %= >>= <<= &= ^= |= char 2 7 3 10 2 1 1 20 8 6 14short 2 7 3 10 2 1 1 20 8 6 14int 2 7 3 10 2 1 1 20 8 6 14long 2 7 3 10 2 1 1 20 8 6 14unsigned 2 7 3 10 2 1 1 20 8 6 14float 2 7 3 10 2.5 | |double 2 7 3 10 2.5 | | | |initial (5,2) | (5,2) | (12,10) The following machine-generated program reflects the tests described in the table. */ cl = 5; cr = 2; cl = cr; if(cl != 2){ lrc = 1; if(prlc) printf(f,lrc); } cl = 5; sr = 2; cl = sr; if(cl != 2){ lrc = 2; if(prlc) printf(f,lrc); } cl = 5; ir = 2; cl = ir; if(cl != 2){ lrc = 3; if(prlc) printf(f,lrc); } cl = 5; lr = 2; cl = lr; if(cl != 2){ lrc = 4; if(prlc) printf(f,lrc); } cl = 5; ur = 2; cl = ur; if(cl != 2){ lrc = 5; if(prlc) printf(f,lrc); } cl = 5; fr = 2; cl = fr; if(cl != 2){ lrc = 6; if(prlc) printf(f,lrc); } cl = 5; dr = 2; cl = dr; if(cl != 2){ lrc = 7; if(prlc) printf(f,lrc); } sl = 5; cr = 2; sl = cr; if(sl != 2){ lrc = 8; if(prlc) printf(f,lrc); } sl = 5; sr = 2; sl = sr; if(sl != 2){ lrc = 9; if(prlc) printf(f,lrc); } sl = 5; ir = 2; sl = ir; if(sl != 2){ lrc = 10; if(prlc) printf(f,lrc); } sl = 5; lr = 2; sl = lr; if(sl != 2){ lrc = 11; if(prlc) printf(f,lrc); } sl = 5; ur = 2; sl = ur; if(sl != 2){ lrc = 12; if(prlc) printf(f,lrc); } sl = 5; fr = 2; sl = fr; if(sl != 2){ lrc = 13; if(prlc) printf(f,lrc); } sl = 5; dr = 2; sl = dr; if(sl != 2){ lrc = 14; if(prlc) printf(f,lrc); } il = 5; cr = 2; il = cr; if(il != 2){ lrc = 15; if(prlc) printf(f,lrc); } il = 5; sr = 2; il = sr; if(il != 2){ lrc = 16; if(prlc) printf(f,lrc); } il = 5; ir = 2; il = ir; if(il != 2){ lrc = 17; if(prlc) printf(f,lrc); } il = 5; lr = 2; il = lr; if(il != 2){ lrc = 18; if(prlc) printf(f,lrc); } il = 5; ur = 2; il = ur; if(il != 2){ lrc = 19; if(prlc) printf(f,lrc); } il = 5; fr = 2; il = fr; if(il != 2){ lrc = 20; if(prlc) printf(f,lrc); } il = 5; dr = 2; il = dr; if(il != 2){ lrc = 21; if(prlc) printf(f,lrc); } ll = 5; cr = 2; ll = cr; if(ll != 2){ lrc = 22; if(prlc) printf(f,lrc); } ll = 5; sr = 2; ll = sr; if(ll != 2){ lrc = 23; if(prlc) printf(f,lrc); } ll = 5; ir = 2; ll = ir; if(ll != 2){ lrc = 24; if(prlc) printf(f,lrc); } ll = 5; lr = 2; ll = lr; if(ll != 2){ lrc = 25; if(prlc) printf(f,lrc); } ll = 5; ur = 2; ll = ur; if(ll != 2){ lrc = 26; if(prlc) printf(f,lrc); } ll = 5; fr = 2; ll = fr; if(ll != 2){ lrc = 27; if(prlc) printf(f,lrc); } ll = 5; dr = 2; ll = dr; if(ll != 2){ lrc = 28; if(prlc) printf(f,lrc); } ul = 5; cr = 2; ul = cr; if(ul != 2){ lrc = 29; if(prlc) printf(f,lrc); } ul = 5; sr = 2; ul = sr; if(ul != 2){ lrc = 30; if(prlc) printf(f,lrc); } ul = 5; ir = 2; ul = ir; if(ul != 2){ lrc = 31; if(prlc) printf(f,lrc); } ul = 5; lr = 2; ul = lr; if(ul != 2){ lrc = 32; if(prlc) printf(f,lrc); } ul = 5; ur = 2; ul = ur; if(ul != 2){ lrc = 33; if(prlc) printf(f,lrc); } ul = 5; fr = 2; ul = fr; if(ul != 2){ lrc = 34; if(prlc) printf(f,lrc); } ul = 5; dr = 2; ul = dr; if(ul != 2){ lrc = 35; if(prlc) printf(f,lrc); } fl = 5; cr = 2; fl = cr; if(fl != 2){ lrc = 36; if(prlc) printf(f,lrc); } fl = 5; sr = 2; fl = sr; if(fl != 2){ lrc = 37; if(prlc) printf(f,lrc); } fl = 5; ir = 2; fl = ir; if(fl != 2){ lrc = 38; if(prlc) printf(f,lrc); } fl = 5; lr = 2; fl = lr; if(fl != 2){ lrc = 39; if(prlc) printf(f,lrc); } fl = 5; ur = 2; fl = ur; if(fl != 2){ lrc = 40; if(prlc) printf(f,lrc); } fl = 5; fr = 2; fl = fr; if(fl != 2){ lrc = 41; if(prlc) printf(f,lrc); } fl = 5; dr = 2; fl = dr; if(fl != 2){ lrc = 42; if(prlc) printf(f,lrc); } dl = 5; cr = 2; dl = cr; if(dl != 2){ lrc = 43; if(prlc) printf(f,lrc); } dl = 5; sr = 2; dl = sr; if(dl != 2){ lrc = 44; if(prlc) printf(f,lrc); } dl = 5; ir = 2; dl = ir; if(dl != 2){ lrc = 45; if(prlc) printf(f,lrc); } dl = 5; lr = 2; dl = lr; if(dl != 2){ lrc = 46; if(prlc) printf(f,lrc); } dl = 5; ur = 2; dl = ur; if(dl != 2){ lrc = 47; if(prlc) printf(f,lrc); } dl = 5; fr = 2; dl = fr; if(dl != 2){ lrc = 48; if(prlc) printf(f,lrc); } dl = 5; dr = 2; dl = dr; if(dl != 2){ lrc = 49; if(prlc) printf(f,lrc); } cl = 5; cr = 2; cl += cr; if(cl != 7){ lrc = 50; if(prlc) printf(f,lrc); } cl = 5; sr = 2; cl += sr; if(cl != 7){ lrc = 51; if(prlc) printf(f,lrc); } cl = 5; ir = 2; cl += ir; if(cl != 7){ lrc = 52; if(prlc) printf(f,lrc); } cl = 5; lr = 2; cl += lr; if(cl != 7){ lrc = 53; if(prlc) printf(f,lrc); } cl = 5; ur = 2; cl += ur; if(cl != 7){ lrc = 54; if(prlc) printf(f,lrc); } cl = 5; fr = 2; cl += fr; if(cl != 7){ lrc = 55; if(prlc) printf(f,lrc); } cl = 5; dr = 2; cl += dr; if(cl != 7){ lrc = 56; if(prlc) printf(f,lrc); } sl = 5; cr = 2; sl += cr; if(sl != 7){ lrc = 57; if(prlc) printf(f,lrc); } sl = 5; sr = 2; sl += sr; if(sl != 7){ lrc = 58; if(prlc) printf(f,lrc); } sl = 5; ir = 2; sl += ir; if(sl != 7){ lrc = 59; if(prlc) printf(f,lrc); } sl = 5; lr = 2; sl += lr; if(sl != 7){ lrc = 60; if(prlc) printf(f,lrc); } sl = 5; ur = 2; sl += ur; if(sl != 7){ lrc = 61; if(prlc) printf(f,lrc); } sl = 5; fr = 2; sl += fr; if(sl != 7){ lrc = 62; if(prlc) printf(f,lrc); } sl = 5; dr = 2; sl += dr; if(sl != 7){ lrc = 63; if(prlc) printf(f,lrc); } il = 5; cr = 2; il += cr; if(il != 7){ lrc = 64; if(prlc) printf(f,lrc); } il = 5; sr = 2; il += sr; if(il != 7){ lrc = 65; if(prlc) printf(f,lrc); } il = 5; ir = 2; il += ir; if(il != 7){ lrc = 66; if(prlc) printf(f,lrc); } il = 5; lr = 2; il += lr; if(il != 7){ lrc = 67; if(prlc) printf(f,lrc); } il = 5; ur = 2; il += ur; if(il != 7){ lrc = 68; if(prlc) printf(f,lrc); } il = 5; fr = 2; il += fr; if(il != 7){ lrc = 69; if(prlc) printf(f,lrc); } il = 5; dr = 2; il += dr; if(il != 7){ lrc = 70; if(prlc) printf(f,lrc); } ll = 5; cr = 2; ll += cr; if(ll != 7){ lrc = 71; if(prlc) printf(f,lrc); } ll = 5; sr = 2; ll += sr; if(ll != 7){ lrc = 72; if(prlc) printf(f,lrc); } ll = 5; ir = 2; ll += ir; if(ll != 7){ lrc = 73; if(prlc) printf(f,lrc); } ll = 5; lr = 2; ll += lr; if(ll != 7){ lrc = 74; if(prlc) printf(f,lrc); } ll = 5; ur = 2; ll += ur; if(ll != 7){ lrc = 75; if(prlc) printf(f,lrc); } ll = 5; fr = 2; ll += fr; if(ll != 7){ lrc = 76; if(prlc) printf(f,lrc); } ll = 5; dr = 2; ll += dr; if(ll != 7){ lrc = 77; if(prlc) printf(f,lrc); } ul = 5; cr = 2; ul += cr; if(ul != 7){ lrc = 78; if(prlc) printf(f,lrc); } ul = 5; sr = 2; ul += sr; if(ul != 7){ lrc = 79; if(prlc) printf(f,lrc); } ul = 5; ir = 2; ul += ir; if(ul != 7){ lrc = 80; if(prlc) printf(f,lrc); } ul = 5; lr = 2; ul += lr;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?