Documente Academic
Documente Profesional
Documente Cultură
Grigore Albeanu
g.albeanu.mi@spiruharet.ro
struct tm{
int tm_sec; /* Seconds: 0-59 (K&R says 0-61?) */
int tm_min; /* Minutes: 0-59 */
int tm_hour; /* Hours since midnight: 0-23 */
int tm_mday; /* Day of the month: 1-31 */
int tm_mon; /* Months *since* january: 0-11 */
int tm_year; /* Years since 1900 */
int tm_wday; /* Days since Sunday (0-6) */
int tm_yday; /* Days since Jan. 1: 0-365 */
int tm_isdst; /* +1 Daylight Savings Time, 0 No DST,
* -1 don't know */
};
https://www.tutorialspoint.com/cprogramming/c_bit_fields.htm
Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 17
C - part 2
Câmpuri de biţi (2)
◼ In exemplul:
struct s_bit {
unsigned a:1;
unsigned b:3;
unsigned :4;
unsigned c:3;
unsigned d:2;
} s;
pentru variabila s se vor aloca 16 biţi (numerotaţi 0-
15 ? Vezi diapozitivul următor), care pot fi
accesaţi prin: s.a (bitul 0); s.b (biţii 1-3); s.c (biţii
8-10); s.d (biţii 11,12). Observăm că biţii 4-7 nu
pot fi accesaţi, pentru ei nu s-a specificat nici un
identificator de câmp. Alocarea câmpurilor
poate ridica probleme de
portabilitate, deoarece organizarea
memoriei depinde de sistemul de
calcul (BIG endian, LITTLE endian).
struct {
unsigned f1 : 4;
unsigned : 3;
signed f2 : 1;
unsigned : 0; /* aliniere */
unsigned f3 : 6;
}sb;
◼ În descrierea
enum {a, b = 6, c, d };
vom avea a = 0, b = 6, c = 7, d = 8.
◼ Componentele de tip enumerare nu pot fi citite de la un mediu
de intrare şi nici afişate deoarece este reţinută numai poziţia
lor în enumerare. Un identificator prezent într-o listă nu poate fi
prezent şi într-o altă listă.
Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 24
C - part 2
Enum – exemplu modificat din …
[http://www.c.happycodings.com/code_snippets/code30.html]
#include <stdio.h>
int main(){
enum Days{Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
Days td;
int j = 0;
printf("Please enter the day of the week (0 to 6)\n");
scanf("%d",&j);
td = Days(j);
If (td == Sunday || td == Saturday)
printf("Bla Bla 1\n");
else
printf("Tot la școală\n");
return 0;
}
◼ software
multiplatformă,
◼ software multi-
interface
http://www.cs.bilkent.edu.tr/~kdincer/teaching/spring2000/metu-ceng332/lectures/pdf-files/ceng332-chp4.pdf
#ifndef SEEK_END
#define SEEK_END (2)
#endif
Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 30
C - part 2
#include
◼ Permite crearea de
programe multi-
platformă sau multi-
client
◼ Permite delimitarea
porţiunilor de cod
care se vor compila
când anumite
condiţii sunt
îndeplinite
◼ Notaţie: Prin
newline indicăm
trecerea la rândul
următor, la început.
int main(void){
func_1(); func_2();
}
#line 100
func_1(){
printf("Func_1 - the current line
number is %d\n",_ _LINE_ _);
}
#line LINE200
func_2(){
printf("Func_2 - the current line
number is %d\n",_ _LINE_ _);
}