if(Overflow_1 & 16)
{}
else
{
komutlar
}
arkadaşlar şu an böyle kullanıyorum çok amatörce geliyor
bunu şöyle kullanmak istiyorum
if(Overflow_1 & 16 !=1)
{
komutlar
}
ama olmuyor hatamı düzeltirseniz sevinirim.
Hocam önce 16!=1 yapılır Bunun sonucu hep "1" olur. Yani 16 farklıdır 1. Bu ifadenin ürettiği değer ile senin Overflow_1 değişkenini bitsel olarak Ve yapmış olursun.
Derleyicilerde işlemler sağdan sola doğru yapılır diye biliyorum ; verdiğin örnekte parantez kullanmadığın için mir_as82 'inde dediği gibi 16!=1 işleminden değer döner.
merhaba
şöyle olmaz mı
if(!(Overflow_1 & 16))
{
komutlar...
}
Herkese teşekkürler
ercan_t,
dediğiniz yöntemle güzel bir şekilde çalıştı
Alıntı yapılan: MrDarK - 09 Şubat 2015, 16:41:51
Derleyicilerde işlemler sağdan sola doğru yapılır diye biliyorum ; verdiğin örnekte parantez kullanmadığın için mir_as82 'inde dediği gibi 16!=1 işleminden değer döner.
Hocam burada operatör önceliği var. != operatörü, & operatöründen önceliklidir.
Alıntı yapılan: mir_as82 - 09 Şubat 2015, 16:45:49
Hocam burada operatör önceliği var. != operatörü, & operatöründen önceliklidir.
Doğrudur hocam; birşey merak ediyorum, yazılımcılar neden işini compiler'ın kollarına bırakır böyle ? Ben genelde compiler'a güveneceğime herşeyi şartlarıma göre parantezliyorum :)
Hocam C programcıları parantezi çok kullanmayı acemilik olarak görüyor:). Ben sadece kursunu aldım C nin aktif olarak C kodu yazmıyorum.
Bu olay derleyici bağımlı olmayan bir olay. Yani bu işin raconunu oluşturan komite bunları kesin çizgiler ile belirlemiş.
Bu noktada amatörlüğü ve profosyonelliği şeklen değil de çıkan kod miktarı ile ölçmek lazım,
İlk yazdığınız kod istediğinizi yapıyor ise daha az kod çıkarır gibi görünüyor,
Çıkan asm kodlarını karşılaştırmak lazım, birinci yöntem ikinci yöntemden daha az kod ile gerçekleştiriliyorsa maalesef ikinci yöntem için daha amatör demek gerekir,
Alıntı yapılan: mir_as82 - 09 Şubat 2015, 17:06:54
Hocam C programcıları parantezi çok kullanmayı acemilik olarak görüyor:). Ben sadece kursunu aldım C nin aktif olarak C kodu yazmıyorum.
Bu olay derleyici bağımlı olmayan bir olay. Yani bu işin raconunu oluşturan komite bunları kesin çizgiler ile belirlemiş.
Bu racon kesenlerle kesin cizgilerle belirleyen komite ..... ye ayip bir sey diyecegim ama..
Neyse CMU SEI (Carnegie Mellon University), SEI (Software Engineering Institue), CERT(Computer emergency Response Team) division Secure Coding rule EXP00-C Soyle yazilmis: "Use parentheses for precedence of operation" https://www.securecoding.cert.org/confluence/display/seccode/EXP00-C.+Use+parentheses+for+precedence+of+operation (https://www.securecoding.cert.org/confluence/display/seccode/EXP00-C.+Use+parentheses+for+precedence+of+operation)
Ayrica: " Operator precedence: MISRA C gives an advisory rule that programmers should be generous in the use of parentheses in expressions, and that no .." Bundan sonrasi icin MISRA kural kitabini almaniz lazim.. :-)
vs vs
Boyle kulaktan dolma hersey inanmayin lutfen!
Mufit hocamin verdigi linkte kisaca. islem onceligi icin parentheses kullanin diyor ::)
Herhangi bir derleyicinin tabiki bir işlem önceliği olması şarttır. Yoksa nerden bilsin hangisini önce yapacağını.
Ancak kullanıcı olarak parantez kullanmak, kodun anlaşılabilirliği açısından şart olmasa da iyidir.
Bazen gerekmediği durumlarda bile parantez kullanırım, birbiri ile yakın ilişkili değişkenlerde felan...
Acemi diyenleri parantez içine alırım, yerini bilir :)
parantez kullanmak ilerideki aşamalarda da iyi oluyor. bazen kafam çok dolu olduğu halde önceden yazdığım bir kodu incelemem gerekiyor. bu gibi noktalarda parantez ile yapılan işlemler daha açık oluyor, kafa karıştırmıyor.