Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
int foo()
{
FILE f = NULL;
int result = 0 ;
f = fopen("somefile.txt", "r");
if ( ! f ) {
perror("fopen");
goto exit;
}
if ( rand() > 5 ) {
result = 1;
goto exit;
}
if ( rand() > 10 ) {
result = 2;
goto exit;
}
result = 3
exit:
if (f)
fclose(f);
return result;
}
- int foo()
- {
- FILE f = NULL;
- int result = ;
- f = fopen("somefile.txt", "r");
-
- do {
- if ( ! f ) {
- perror("fopen");
- break;
- }
-
- if ( rand() > 5 ) {
- result = 1;
- break;
- }
-
- if ( rand() > 10 ) {
- result = 2;
- break;
- }
-
- result = 3
-
- } while (false);
-
- if (f)
- fclose(f);
-
- return result;
- }
<?php
begin:
echo $i++;
goto begin;
* This source code was highlighted with Source Code Highlighter.
for(int i = 0; i < arrayLength; ++i)
{
if (array[i] == 5) goto FOUND;
}
// doing somthing
return false;
FOUND:
// doing somthing else
return true;
for(int i = 0; i < arrayLength; ++i)
{
if (array[i] == 5) {//found
// doing somthing else
return true;
}
}
//not found
// doing somthing
return false;
if (condition)
{
goto CANCEL;
}
// some code here
if (another_condition)
{
goto CANCEL;
}
// some another code here
return true;
CANCEL:
// some cleanup code
return false;
if (!condition) {
// some code here
if (!another_condition) {
//some another code
return true;
}
}
//some cleanup code here
return false;
if (!condition)
{
// some code here
if (!another_condition)
{
//some another code
if (!another_condition)
{
//some another code
if (!another_condition)
{
//some another code
if (!another_condition)
{
//some another code
return true;
}
}
}
}
}
//some cleanup code here
return false;
int p54_read_eeprom(struct ieee80211_hw *dev)
{
struct p54_common *priv = dev->priv;
struct p54_eeprom_lm86 *eeprom_hdr;
struct sk_buff *skb;
size_t eeprom_size = 0x2020, offset = 0, blocksize, maxblocksize;
int ret = -ENOMEM;
void *eeprom = NULL;
maxblocksize = EEPROM_READBACK_LEN;
if (priv->fw_var >= 0x509)
maxblocksize -= 0xc;
else
maxblocksize -= 0x4;
skb = p54_alloc_skb(dev, P54_HDR_FLAG_CONTROL, sizeof(*eeprom_hdr) +
maxblocksize, P54_CONTROL_TYPE_EEPROM_READBACK,
GFP_KERNEL);
if (!skb)
goto free;
priv->eeprom = kzalloc(EEPROM_READBACK_LEN, GFP_KERNEL);
if (!priv->eeprom)
goto free;
eeprom = kzalloc(eeprom_size, GFP_KERNEL);
if (!eeprom)
goto free;
...
еще пол экрана кода
...
ret = p54_parse_eeprom(dev, eeprom, offset);
free:
kfree(priv->eeprom);
priv->eeprom = NULL;
p54_free_skb(dev, skb);
kfree(eeprom);
return ret;
}
if(!condition && !another_condition && !another_condition && !another_condition) {
return true;
} else {
return false;
}
// some code here
if(condition) {
// кусок кода, который зависит от условия
// и вызывает преждевременную остановку программы
goto CANCEL;
}
if(condition) {
// кусок кода, который зависит от условия
// но не вызывает преждевременную остановку программы
}
for(;;)
{
echo $i++;
}
exit_flag = False
while(!exit_flag) {
while(!exit_flag) {
....
exit_flag = True;
break;
....
}
}
for(...
if(!exit_flag) { break; }
exit_flag = False;
for(i=0;i++;i<10 && !exit_flag) {
if(!exit_flag) { break; }
for(j=0;j++;j<10 && !exit_flag) {
...
exit_flag = True;
...
}
}
exit_flag = False;
for(i=0;i++;i<10 && !exit_flag) {
for(j=0;j++;j<10 && !exit_flag) {
...
exit_flag = True;
...
}
}
for($i = 0; $i < 10; $i++) {
for($j = 0; $j < 10; $j++) {
$result = $i*10 + $j;
var_dump($result);
if($result == rand(0, 99)) {
break 2;
}
}
}
top:
while(true) {
while(true) {
break top;
}
}
«Paamayim Nekudotayim» на первый взгляд может показаться странным словосочетанием для обозначения двойного двоеточия. Однако, во время создания Zend Engine версии 0.5 (который входил в PHP3), Andi и Zeev выбрали именно это обозначение. «Paamayim Nekudotayim» действительно значит «двойное двоеточие». На иврите. Просто это обозначение не менялось ни разу в течение всего времени разработки PHP.
GOTO