branches.c

来自「这个是LINUX下的GDB调度工具的源码」· C语言 代码 · 共 114 行

C
114
字号
/* Tests for single stepping through various branch conditions */int noscramble(int a){  return a ;}int echo(int a){ return noscramble(a) ; }int equaltest(int a,int b){ int retval ;  if (a == b)    retval = noscramble(1) ;  else retval = noscramble(0) ;  return retval ;}int neqtest(int a , int b){ int retval ;  if (a != b)    retval = echo(1) ;  else retval = echo(2) ;  return retval ;}int zerotest(int a ){ int retval ;  a = echo(a) ;  if (a ==0)    retval = echo(1) ;  else    retval = echo(0) ;  retval = echo(retval) ;  return retval ;}int zerotest2(int a){  return (a==0) ;}int nonzerotest(int a){  int retval ;  if (a != 0)    retval = echo(0) ;  else retval = echo(1) ;  return retval ;}int whiletest(int a){  while (a > 0)    {      a-- ;    }  return 0 ;}int whiletest2(int a){  while (a > 0)    {      a = noscramble(a) ;      a-- ;    }  return a ;}int decr(int x) { return x - 1  ; }int while3(int a){  int b = a ;  while (a == b)    {      a = echo(a) ;      b = decr(b) ;    }  return a ;}void done (int x) { } int main(){  int a,b,c,d ;  done(1) ;  a = echo(123456) ;  b = echo(123456) ;  c = echo(56789) ;  d = echo(0) ;#if 1  equaltest(a,b) ;  done(7) ;  equaltest(a,c) ;  done(8) ;  whiletest(3) ;  /* worked */  done(3) ;  while3(3) ;  done(6) ;#endif    neqtest(a,b) ;   neqtest(a,b) ;   neqtest(a,c) ;   zerotest(d) ;  zerotest(a) ;  done(5) ;  nonzerotest(d) ;  done(4) ;  nonzerotest(a) ;  done(111) ;  return 1 ;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?